2012-02-17 5 views
2

У меня есть многопроцессорный процесс, в который пользователь вводит данные, и я сохраняю его до свойств класса модели каждый шаг на этом пути.textFieldDidEndEditing сжигание «слишком поздно»

Я использую textFieldDidEndEditing, чтобы проверить, является ли вход действительным, и если да, сохраняет введенные данные.

В представлении у меня есть событие continueButtonClicked, которое проверяет, проходят ли все проверки и загружает ли это следующее представление. Я НЕ устанавливаю свойства модели здесь, потому что я думаю, что мне не нужно, поскольку каждое поле сохраняется в поле модели 1 за раз. Однако я заметил некоторые проблемы.

Если пользователь находится внутри текстового поля и нажимает кнопку «Продолжить», событие continueButtonClicked запускается до textFieldDidEndEditing. Что происходит, так это то, что следующее представление заполняется «старой» моделью до того, как произойдет спасение в textFieldDidEndEditing.

Что мне не хватает? Правильно ли устанавливать все свойства в Continue? Вот как я это сделал бы, если бы я программировал для Интернета, но это не похоже на родное приложение.

ответ

1

Можете ли вы попробовать это вместо этого и посмотреть, решит ли это вашу проблему?

textFieldShouldEndEditing: 
+0

Awesome! Кажется, это решило проблему. Я немного смущен, почему textFieldShouldEndEditing срабатывает дважды: один раз перед поля continueButtonClick for ALL и второй раз для активного поля после возникновения события continueButtonClick. Это кажется безобидным, но просто любопытным. – jaySF

+0

Если это активный, который вы действительно хотите, вы всегда можете определить это, тестируя, если это первый ответчик. – mbh

4

Вы можете позвонить resignFirstResponder в активное текстовое поле/текст (или на всех из них), которое вызовет textFieldDidEndEditing.

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

+0

спасибо. Я также рассмотрю этот метод, когда у меня найдется время - просто обернуть вокруг себя голову. Решение mbh выше оказалось для меня быстрее, но я тоже интересуюсь этим – jaySF

Смежные вопросы