Получать уведомление, когда UITextField становитсяFirstResponder

Как я могу получить уведомление, когда UITextField becomeFirstResponder?

Я могу проверить как isFirstResponder или установить для того, чтобы стать первым ответчиком на becomeFirstResponder

Я хочу получать уведомление или обрабатывать событие, когда пользователь делает это текстовое поле первым ответчиком.

Спасибо.

Ответы

Ответ 1

Вам нужно будет предоставить делегат текстового поля и реализовать этот необязательный метод делегирования:

- (void)textFieldDidBeginEditing:(UITextField *)textField; 

Ответ 2

Помимо реализации метода UITextFieldDelegate textFieldDidBeginEditing:, вы можете зарегистрироваться для уведомления UITextFieldTextDidBeginEditingNotification.

Метод уведомления может быть:

- (void)someTextFieldDidBeginEditing:(NSNotification *)notification {
    UITextField *textField = (UITextField *)notification.object;
}

Ответ 3

Делегат - это, безусловно, путь. К сожалению, в моей ситуации я не мог использовать это, потому что контроллер был делегатом моего подкласса UITextField, и мне нужно было изменить его текст заполнителя. Вместо этого я переопределяю методы - (BOOL)canBecomeFirstResponder; и - (BOOL)resignFirstResponder;. Обязательно вызовите super.

Ответ 4

Для OSX вы должны знать о кнопках, имеющих побочные эффекты, при использовании NSControlTextDidBeginEditingNotification.

Когда вы начинаете редактирование, нажимаете некоторые кнопки и возобновляете редактирование текстового поля, вы не получите второй NSControlTextDidBeginEditingNotification при возобновлении редактирования.

В случае возникновения такого поведения проблема может быть альтернативой UITextFieldTextDidChangeNotification.