Я удивлен, что я не могу найти ответ на эту простую задачу. Я просто хочу, чтобы пользователь печатал текст, нажимал enter, и приложению было известно, что он набрал. Как мне это сделать?Вызов функции, когда пользователь нажимает кнопку ввода в NSSearchField?
5
A
ответ
16
NSSearchField
поддерживает механизм действия цели, поэтому просто подключите его к цели/действию. Например, предположим, что вы следующее действие, заявленные в прикладном делегата:
- (IBAction)searchAnswer:(id)sender;
В Interface Builder, Ctrl-перетащить поле поиска на объект делегата приложения и выберите searchAnswer:
действие. В своей реализации используйте -stringValue
, чтобы получить текст, введенный пользователем в поле поиска, например.
- (IBAction)searchAnswer:(id)sender {
NSLog(@"search answer: %@", [searchField stringValue]);
}
Обратите внимание, что по умолчанию поле поиска отправляет действие, когда пользователь делает паузу/прекращает печатать. Если вы хотите, чтобы он отправил действие только тогда, когда пользователь вводит Enter, установите флажок Sends Whole Search String
в окне инспектора атрибутов поля поиска.
Спасибо! Некоторые вещи просто слишком понятны, я думаю ... – Flafla2
@ Flafla2: Цель/действие на более высоком уровне, чем события клавиш или мыши. Поле может отправлять свое действие, даже если у пользователя нет клавиши ввода или вообще нет клавиатуры. Кнопка может отправить свое действие, даже если у пользователя нет мыши. Использование target/action означает, что вы можете получить действие независимо от того, какие интерфейсные устройства у пользователя есть или нет. –