Действие при нажатии маленькой крестовой кнопки UITextField - PullRequest
3 голосов
/ 05 сентября 2011

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

textField.clearButtonMode = UITextFieldViewModeWhileEditing;

Я также реализовал UITextFieldDelegate.

Я хочу активировать / деактивировать правую кнопку панели UINavigationBar в соответствии с изменениями в моем UITextField.Правило простое: если текстовое поле имеет хотя бы один символ, просто включите кнопку, в противном случае отключите ее.

Я реализовал метод делегата UITextField textField:shouldChangeCharactersInRange:, чтобы постоянно проверять требование и обновлятьсостояние кнопки.

Теперь моя проблема в том, что когда я нажимаю маленькую крестообразную кнопку в текстовом поле, метод textField:shouldChangeCharactersInRange: не вызывается.Таким образом, необходимое действие отсутствует.Как я могу определить событие нажатия кнопки очистки?

Некоторые изображения, чтобы показать, о чем я говорю.

Начальная стадия: здесь кнопка «Готово» отключена, потому что естьнет букв в текстовом поле

При наборе буквы кнопка «Готово» активируется

Теперь, если я нажму на кнопкуКнопка «Готово» все еще активна.Это неправильно.

Ответы [ 2 ]

7 голосов
/ 05 сентября 2011

Используйте метод делегата textViewShouldClear::

Спрашивает делегата, должно ли текущее содержимое текстового поля быть удален.

- (BOOL)textFieldShouldClear:(UITextField *)textField

Параметры

textField

Текстовое поле, содержащее текст.

Возвращаемое значение

YES если содержимое текстового поля следует очистить; в противном случае NO.

Обсуждение

Текстовое поле вызывает этот метод в ответ на нажатие пользователем встроенная кнопка очистки. (Эта кнопка не отображается по умолчанию, но может быть включается путем изменения значения в свойстве clearButtonMode текстовое поле.) Этот метод также вызывается, когда начинается редактирование и clearsOnBeginEditing свойство текстового поля установлено на YES.

Реализация этого метода делегатом является необязательной. Если это отсутствует, текст очищается, как если бы этот метод возвратил YES. Наличие

* Available in iOS 2.0 and later.

объявлено в UITextField.h

4 голосов
/ 05 сентября 2011

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

...