Когда я создаю UITextField внутри Interface Builder, я могу открыть для него вкладку Events, в которой есть события, такие как Value changed, Touch cancel, Touch drag и т.д. Я могу назначить свои собственные методы для каждого из этих событий. Как я могу сделать то же самое, когда я создаю UITextField программно с помощью alloc?
События UiTextField
Ответ 1
Обратитесь к документации Apple для UIControl
. После инициализации textField
вызовите addTarget:action:forControlEvents:
пример для события касания, заканчивающего сеанс редактирования
[textField addTarget:self action:@selector(handleTouchValueChanged:) forControlEvents: UIControlEventEditingDidEnd]
Ответ 2
Вместо UIControlEventValueChanged
вы должны использовать UIControlEventEditingChanged
:
[_titleTextField addTarget:self action:@selector(handleTitleValueChanged:) forControlEvents:UIControlEventEditingChanged];
Ответ 3
UIControlEventEditingChanged
срабатывает всякий раз, когда пользователь меняет значение [синхронно с типом или клавиатурой]
что может привести к дополнительным попаданиям в рутину обработчика данных, если вы сохраняете значения на основе этого события, ожидая, что это будет какое-то окончательное значение из пользовательского ввода...