当 UITextField 成为 Touch ID 完成块中的第一响应者时,不显示 iOS 键盘(在 UIRemoteKeyboardWindow 内)(iOS 10)

2023-12-31

我最近在我的应用程序中发现了一个问题,该问题似乎只发生在 iOS 10 中,当以编程方式触发文本字段成为完成处理程序内的第一响应者时,系统键盘不会显示 - 特别是我从中返回的完成处理程序Touch ID 尝试。

这个问题最疯狂的部分是,即使没有显示键盘,iPhone 上键盘通常所在的区域仍然对触摸输入做出响应,就像用户在键盘上打字一样!

在对这个问题进行了大量的调查和调试之后,我偶然发现了这样一个事实:hidden属性设置为YES关于私人的UIRemoteKeyboardWindow之后创建的becomeFirstResponder在文本字段上调用。在其他情况下,当我打开键盘时,它的值hidden属性设置为NO.

有其他人在 iOS 10 中遇到过这个问题吗?如果是这样,有人找到解决方案吗?我尝试手动设置hidden价值YES在窗口实例上,但这对其没有影响。在这一点上我几乎抓住了救命稻草。

附件:
这是窗口的输出UIApplication当文本字段成为 Touch ID 完成处理程序之外的第一响应者时的实例(密切注意UIRemoteKeyboardWindow):

而当UITextField成为 Touch ID 处理程序中的第一响应者...

第一次更新

所以我没有考虑becomeFirstResponder之前在主线程上完成了一些人指出的操作,但不幸的是,它并没有解决问题——但是,我确实有了一些额外的发现。这hidden窗口问题似乎源于输出的详细信息UIApplication发出后立即实例的窗口becomeFirstResponder行动。完成之后,我在上面设置了一个断点UITextField编辑回调并继续与键盘交互(这是不可见的)——当我输出窗口详细信息时,它看起来并不像hidden属性曾经设置为YES(这可能排除该属性被设置为问题的原因),但我仍然有一个隐形键盘!我开始调试视图层次结构,下面是我检查键盘窗口时的屏幕截图:

希望你们能看到我在这里发现的东西,那就是钥匙是存在的,但似乎有一些白色的视野挡住了它们的视线。问题是,我什至在我的应用程序屏幕上看不到那些白色视图。我只是看到键盘后面通常有什么东西。


作为临时解决方法,请致电becomeFirstResponder经过一段时间的延迟修复了这个问题,但是,不满意hacky解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当 UITextField 成为 Touch ID 完成块中的第一响应者时,不显示 iOS 键盘(在 UIRemoteKeyboardWindow 内)(iOS 10) 的相关文章

随机推荐