Как я могу сделать вкладку "Переместить фокус" из NSTextView?

Я использую NSTextView, чтобы разрешить многострочный ввод. Однако из-за характера моего приложения пользователям будет удобнее переходить к следующему элементу ввода, когда они нажимают TAB.

Как я могу заставить TAB выйти из NSTextView, сохраняя поведение новой строки клавиши Enter?

Ответ 1

Вы можете реализовать -textView:doCommandBySelector: в делегате текстового представления:

- (BOOL)textView:(NSTextView *)aTextView doCommandBySelector:(SEL)aSelector {
    if (aSelector == @selector(insertTab:)) {
        [[aTextView window] selectNextKeyView:nil];
        return YES;
    }

    return NO;
}

См. http://developer.apple.com/documentation/Cocoa/Reference/NSTextViewDelegate_Protocol

Ответ 2

Вам нужно реализовать это в подклассе.

Я написал такой подкласс для Перевести текст. Вы можете использовать его в свою лицензию BSD. Здесь заголовок и файл реализации.

... сохраняя поведение новой строки клавиши Enter?

Моя основная цель состояла в том, чтобы отправить действие на цель, когда пользователь нажимает Enter, и у меня также есть возможность сбрасывать фокус с представления. Однако оба являются явными выражениями в коде; вы можете просто прокомментировать этот код или удалить его.