TextfieldDidending Увольнение «Слишком поздно»
-
27-10-2019 - |
Вопрос
У меня есть многовидный процесс, который пользователь вводит в данные, и я сохраняю его на свойствах класса модели каждый шаг.
я использую textFieldDidEndEditing
Чтобы проверить, действителен ли вход, и если да, сохраняет введенные данные.
На представлении у меня есть событие продолжения ButtonClicked, которое проверяет, пройдут ли все проверки, и если это так загружает следующее представление. Я не устанавливаю свойства модели здесь, потому что я думаю, что мне не нужно, так как каждое поле сохранено в поле Model 1 за раз. Однако я заметил некоторые проблемы.
Если пользователь находится внутри текстового поля и нажимает кнопку «Продолжить», событие ContiningButtonClicked стреляет перед textFieldDidEndEditing
. Анкет Что в итоге происходит, так это то, что следующее представление заполнено «старой» моделью до сохранения в textFieldDidEndEditing
.
Что мне не хватает? Уместно ли установить все свойства на продолжение? Вот как я бы сделал это, если бы программировал Интернет, но это не подходит для нативного приложения.
Решение
Можете ли вы попробовать это вместо этого и посмотреть, решает ли это вашу проблему?
textFieldShouldEndEditing:
Другие советы
Вы можете позвонить resignFirstResponder
на Active Textfield/TextView (или на всех из них), что запустит textFieldDidEndEditing
.
В целом, для таких вопросов редактирования текста еще один подход - злоупотреблять -textField:shouldChangeCharactersInRange:...
Метод делегата, в котором вы можете определить новое значение для каждого введенного символа. Вы должны вернуться к этому методу, только если нет другого пути.