У меня есть UITextFieldDelegate, который выполняет целую кучу проверки на входе пользователя, чтобы определить, разрешено ли им прекращать редактирование. В одном конкретном примере недопустимо оставить поле пустым.Обнаруживает, когда текст UITextField изменился из-за отмены встряхивания?
Сейчас я использую textField:shouldChangeCharactersInRange:replacementString:
для проверки ввода текста после каждого редактирования пользователем.
Проблема заключается в следующем: если пользователь очищает поле (с помощью маленькой кнопки «x»), код проверки переходит в «недействительный» режим и не позволяет пользователю перемещаться, пока не войдет в действительный текст. Если пользователь затем встряхивает телефон, чтобы вернуть старый текст, shouldChangeCharactersInRange
не вызывается снова, и делегат остается в «недействительном» состоянии, вместо того чтобы признать, что все снова хорошо.
Не уверен, что я использую его правильно, но похоже, что встроенное оборудование UITextFieldDelegate не в состоянии справиться с изменениями текста из-за отмены/повтора.
Каков наилучший способ добиться правильной проверки в этом сценарии? Я действительно нуждаюсь в подклассе UITextField, чтобы реализовать motionEnded:withEvent:
? Похоже, что обработка данных редактирования в UITextField действительно должна быть независимой от того, на самом деле пользователь набрал ее, или это произошло из-за отмены, так что было бы ошибкой, если бы мне действительно пришлось идти по этому маршруту.
Отлично, спасибо. Работает с удовольствием и намного проще, чем реализация 'shouldChangeCharactersInRange' и' textFieldShouldClear', что я и делал раньше. Вздох облегчения! – glenc