Ответ 1
Вам нужно будет предоставить делегат текстового поля и реализовать этот необязательный метод делегирования:
- (void)textFieldDidBeginEditing:(UITextField *)textField;
Как я могу получить уведомление, когда UITextField
becomeFirstResponder
?
Я могу проверить как isFirstResponder
или установить для того, чтобы стать первым ответчиком на becomeFirstResponder
Я хочу получать уведомление или обрабатывать событие, когда пользователь делает это текстовое поле первым ответчиком.
Спасибо.
Вам нужно будет предоставить делегат текстового поля и реализовать этот необязательный метод делегирования:
- (void)textFieldDidBeginEditing:(UITextField *)textField;
Помимо реализации метода UITextFieldDelegate
textFieldDidBeginEditing:
, вы можете зарегистрироваться для уведомления UITextFieldTextDidBeginEditingNotification
.
Метод уведомления может быть:
- (void)someTextFieldDidBeginEditing:(NSNotification *)notification {
UITextField *textField = (UITextField *)notification.object;
}
Делегат - это, безусловно, путь. К сожалению, в моей ситуации я не мог использовать это, потому что контроллер был делегатом моего подкласса UITextField, и мне нужно было изменить его текст заполнителя. Вместо этого я переопределяю методы - (BOOL)canBecomeFirstResponder;
и - (BOOL)resignFirstResponder;
. Обязательно вызовите super.
Для OSX вы должны знать о кнопках, имеющих побочные эффекты, при использовании NSControlTextDidBeginEditingNotification
.
Когда вы начинаете редактирование, нажимаете некоторые кнопки и возобновляете редактирование текстового поля, вы не получите второй NSControlTextDidBeginEditingNotification
при возобновлении редактирования.
В случае возникновения такого поведения проблема может быть альтернативой UITextFieldTextDidChangeNotification
.