Валидация должна обрабатываться в textFieldShouldEndEditing:
, а не textFieldDidEndEditing:
. Методы «следует» вызываются до того, как что-то заканчивается, чтобы разрешить проверку. Методы "did" - это уведомления о том, что уже произошло.
РЕДАКТИРОВАТЬ Вы не будете использовать категорию для UITextField
для этого. Есть много хороших решений.
- Иметь один общий
UITextFieldDelegate
для всех ваших текстовых полей
- Подкласс ваших делегатов из согласованного суперкласса, который реализует это так, как вы хотите
- Поместите разделяемую логику в функцию, которую ваши делегаты вызывают, чтобы избежать подкласса
- Поместите вашу общую логику в единый
TextFieldController
, на который будут ссылаться все ваши делегаты текстового поля.
Все зависит от того, какая логика вам нужна в этой процедуре. Но вы не должны использовать категории для переопределения существующих методов.