Как заставить NSTextField принять вкладку, клавиши Return и клавиши Enter.
Q: Как я заставляю NSTextField принять клавишу Tab, а также клавиши Return и клавиши Enter как разрывы строки?
A: Стоит отметить это NSTextField повреждения новой строки поддержек при помощи Возврата опции или Опции - Входят. Но при большинстве обстоятельств самое простое решение состояло бы в том, чтобы использовать NSTextView вместо этого.
Таким образом, необходимо спросить себя, «почему» Вы хотите продолжить использовать NSTextField. Вот список возможных причин:
Для пользователей может не быть очевидно, что Возврат опции и Опция - Входят, доступны им.
Вы хотите продолжить использовать удобства и функции суперкласса NSTextField
NSControl.NSTextField легок по сравнению с NSTextView.
NSTextField поддерживает горизонтальную прокрутку, по умолчанию NSTextView не делает и требует, чтобы дополнительная работа избежала переноса текста.
Вы хотите гибкость использования схемы цели/действия, часто конфигурируемой в InterfaceBuilder.
Вы можете просто хотеть просто позволить клавишу Tab и не обеспокоены разрывами строки.
Метод делегата
Если Вы решаете продолжить использовать NSTextField, разрешение клавиши Tab и/или разрешение входят, и клавиши Return для разрывов строки могут быть достигнуты путем реализации следующего метода делегата:
- (BOOL)control:(NSControl*)control textView:(NSTextView*)textView doCommandBySelector:(SEL)commandSelector;
Имя метода doCommandBySelector означает «попытку выполнить обозначенный метод». Это происходит или выгнано NSResponder класс.
Этот метод делегата является частью NSControl, таким образом, это найдено в NSControl.h, не в NSTextField.h.
Метод делегата перечисления 1 В качестве примера для NSTextField.
- (BOOL)control:(NSControl*)control textView:(NSTextView*)textView doCommandBySelector:(SEL)commandSelector |
{ |
BOOL result = NO; |
if (commandSelector == @selector(insertNewline:)) |
{ |
// new line action: |
// always insert a line-break character and don’t cause the receiver to end editing |
[textView insertNewlineIgnoringFieldEditor:self]; |
result = YES; |
} |
else if (commandSelector == @selector(insertTab:)) |
{ |
// tab action: |
// always insert a tab character and don’t cause the receiver to end editing |
[textView insertTabIgnoringFieldEditor:self]; |
result = YES; |
} |
return result; |
} |
Для получения дополнительной информации о NSTextField и NSTextView относятся к текстовому Руководству по архитектуре Какао.
История версии документа
| Дата | Примечания |
|---|---|
| 12.05.2014 | Обновленная ссылка к текстовому Руководству по архитектуре Какао. |
| 09.10.2006 | Новый документ, описывающий, как заставить управление NSTextField принять вкладку, клавиши Return и клавиши Enter при помощи метода делегата отгрузки управления. |