2011-01-13 2 views
0

Я реализую функции безопасного пароля в приложении. Часть решения основана на примере кода PTPasscodeViewController, который можно найти в GitHub. Проблема, с которой я столкнулась, - это когда приложение запускается первым и вводится PIN-код. Пользовательский интерфейс не обновляется с кругом в каждом поле. Если введенные 4 цифры введенного ПИН неверны, мое сообщение не отображается. Это как если бы runloop не исполнялся или что-то в этом роде. Если я введу правильный PIN-код, приложение будет разблокировано, как ожидалось. Функциональность работает, но пользовательский интерфейс не обновляется.Strange iPhone App Launch Issue

После того, как приложение будет разблокировано, если я перейду в Настройки (в приложении) и измените код доступа, точки будут отображаться точно, и если во время подтверждения PIN-кода второй PIN-код не соответствует первому, пользовательский интерфейс также будет правильно обновлен.

Фоновая многозадачность включена в этом приложении. В iOS 4.2.1, когда приложение становится активным, используется одна и та же логика проверки PIN-кода, как при первом запуске приложения. Единственная разница в том, что это не первый лаух, а возвращение с фона. В этом случае логика проверки PIN-кода и пользовательский интерфейс работают правильно ... выполняется тот же код. Точки и любые сообщения отображаются правильно.

Однако на 3.1.2, поскольку фоновая многозадачность не поддерживается, приложение всегда запускается с нуля. Поэтому каждый раз, когда приложение запускается, функциональность работает, но пользовательский интерфейс не обновляется должным образом.

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

ответ

0

Я сам решил эту проблему, и это было результатом отсутствия понимания того факта, что applicationDidBecomeActive также запускается после приложенияDidFinishLaunchingWithOptions. В основном код, отображающий экран проверки PIN-кода, выполнялся дважды подряд при первом прикладе приложения. Удалив запуск проверки PIN-кода из приложенияDidFinishLaunchingWithOptions и вызвав его только в applicationDidBecomeActive, он исправил его.