Как я могу заставить клавишу Tab перемещать фокус из NSTextView? - PullRequest
15 голосов
/ 20 марта 2010

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

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

Ответы [ 2 ]

19 голосов
/ 21 марта 2010

Вы можете реализовать -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

4 голосов
/ 21 марта 2010

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

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

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

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

...