Недавно я обнаружил проблему в своем приложении, которая, по-видимому, возникает в iOS 10, где системная клавиатура не отображается при программном запуске текстового поля, чтобы стать первым ответчиком внутри обработчика завершения - в частности, обработчик завершения я вернитесь из попытки Touch ID.
Сумасшедшая часть этой проблемы заключается в том, что даже если клавиатура не отображается, область на iPhone, где обычно будет клавиатура, все еще реагирует на сенсорные входы, как если бы пользователь печатал на клавиатуре!
После большого количества исследований и отладки в этой проблеме я наткнулся на то, что для свойства hidden
установлено значение YES
на закрытом UIRemoteKeyboardWindow
, которое создается после того, как becomeFirstResponder
вызывается в тексте поле. В других ситуациях, когда я поднимаю клавиатуру и вывожу значение этого свойства hidden
, оно устанавливается на NO
.
Кто-нибудь еще сталкивается с этой проблемой в iOS 10? Если да, то кто-нибудь нашел решение? Я попытался вручную установить значение hidden
в YES
в экземпляре окна, но это не повлияло на него. На данный момент я довольно много ухватился за соломинку.
Приложения:
Здесь вывод окон из экземпляра UIApplication
, когда текстовое поле становится первым ответчиком вне обработчика завершения Touch ID:
И когда он становится первым ответчиком внутри обработчика Touch ID:
Первое обновление
Итак, я не рассматривал becomeFirstResponder
в основном потоке до того, как некоторые из них указали, но, к сожалению, это не решило проблему, однако я сделал некоторые дополнительные открытия. Проблема с окном hidden
, по-видимому, связана с выдачей деталей окон экземпляра UIApplication
сразу после выдачи действия becomeFirstResponder
. После этого я установил точку останова в обратном вызове UITextField
и перейду к взаимодействию с клавиатурой (это невидимо) - и когда я вывожу детали окна, это не похоже, что свойство hidden
всегда установить на YES
(что может исключить, что это свойство задано как причина проблемы), но у меня все еще есть невидимая клавиатура! Я начал отлаживать иерархию представлений, а ниже - скриншот того, как он выглядит, когда я просматриваю окно клавиатуры:
Надеюсь, вы, ребята, можете увидеть, что я обнаружил здесь, что ключи присутствуют, но, похоже, какой-то белый вид блокирует их из виду. Дело в том, что я даже не вижу эти белые виды на экране своего приложения. Я просто вижу, что обычно сидит за клавиатурой, когда она присутствует.