Подтвердить что ты не робот

Невозможно ввести текст в UITextField или UITextView в iOS6

В одном из моих приложений, когда я пытаюсь отредактировать (введите текст) UITextField, UITextView или любой другой текст, способный UIControl, курсор просто мигает, но символы не набираются, кроме BACKSPACE (возможно только при наличии в нем некоторого исходного текста), RETURN и переключения типов символов. Это относится ко всем элементам управления для всего приложения.

Резюме:

  • Это происходит только с iOS 6.0 (не происходит на iOS 5.x, 4.x ни на симуляторе, ни на реальном устройстве)
  • Все методы делегата увольняются (shouldBeginEditing: didBeginEditing:) кроме shouldChangeCharactersInRange:
  • флаг ifFirstResponder корректно работает (shouldBeginEditing: logs NO, while didBeginEditing: правильно записывает YES). Он также проверяется с использованием журналов, которые FirstResponder IS уже отредактировал.
  • Он исправляет себя после любой UIAlertView представляется пользователю и уволен. Не имеет значения, отображается ли это предупреждение на том же экране (представление UIViewController) или любое другое.

Я не знаю, как подойти или отладить это.

Где мне искать подсказки? Любые специалисты по отслеживанию проблем, связанных с цепочкой ответчиков и т.д.?

Как я могу отслеживать эффект UIAlertView для проблемы?

4b9b3361

Ответ 1

В зависимости от вашей реализации это либо метод makeKeyAndVisible класса UIWindow, который вы забыли вызвать внутри метода - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions делегата приложения или соответствующего флага Visible at Launch в вашем основном файле xib интерфейса.

Приветствия::

Ответ 2

в моем случае в главном окне есть "видимый при запуске", он не был отмечен, который работает только на iOS5, необходимо проверить его, чтобы он работал на iOS6.

Ответ 3

В моей ситуации у меня был индикатор активности, который появлялся бы над основным окном в периоды фоновой активности. В этом случае вид индикатора активности имел свое собственное окно, которое было настроено на UIWindowLevelAlert. В этом окне я случайно вызывал makeKeyAndVisible. Позже я бы назвал resignKeyWindow. Это использовалось для работы с iOS 4 и 5, но больше не работало в iOS 6. Я обнаружил, что это не было технически необходимо, поскольку просто использование window.hidden = Y/N работало точно также.

Ответ 4

В моем случае я переместил startFirstResponder для моего UITextField из ViewDidLoad в ViewDidAppear, и это решило мою проблему.