Могу ли я переопределить текстовое поле закончил редактирование, чтобы включить проверку проверки - PullRequest
1 голос
/ 06 сентября 2011

Как переопределить функцию делегата uitextfield, чтобы она выполняла проверку введенного текста. то есть мне нужно переопределить текстовое поле, завершил ли метод редактирования, чтобы выполнить проверку, и это должно относиться ко всем текстовым полям в моем проекте. Могу ли я сделать это, используя категории?

Ответы [ 2 ]

3 голосов
/ 06 сентября 2011

Валидация должна обрабатываться в textFieldShouldEndEditing:, а не textFieldDidEndEditing:. Методы «следует» вызываются до того, как что-то заканчивается, чтобы разрешить проверку. Методы "did" - это уведомления о том, что уже произошло.

РЕДАКТИРОВАТЬ Вы не будете использовать категорию для UITextField для этого. Есть много хороших решений.

  • Иметь один общий UITextFieldDelegate для всех ваших текстовых полей
  • Подкласс ваших делегатов из согласованного суперкласса, который реализует это так, как вы хотите
  • Поместите разделяемую логику в функцию, которую ваши делегаты вызывают, чтобы избежать подкласса
  • Поместите вашу общую логику в единый TextFieldController, на который будут ссылаться все ваши делегаты текстового поля.

Все зависит от того, какая логика вам нужна в этой процедуре. Но вы не должны использовать категории для переопределения существующих методов.

1 голос
/ 06 сентября 2011

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

Опять же, как говорит Роб, все зависит от логики, необходимой вашему приложению.

...