it-roy-ru.com

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

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

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

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

Благодарю.

16
shebelaw

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

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

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

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

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

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

1
estobbart

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

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

Если такое поведение вызывает проблему, UITextFieldTextDidChangeNotification может быть альтернативой.

0
Pisca46