美文网首页
iOS11多window下键盘不显示问题

iOS11多window下键盘不显示问题

作者: 山有木枝壮 | 来源:发表于2017-08-07 11:10 被阅读471次

描述

弹出框中有自定义的键盘输入,类似于支付宝支付密码,在iOS10中,触发之后,能够正常弹出键盘,在最新的iOS11 beta版中,触发之后,键盘不弹出。

一、查看了window的层级,弹出框自己占用了一个层级

Xcode中查看view的层级

发现键盘弹出的window,UITextEffectsWindow下没有键盘的内容(其实这样根本看不出问题)

最后尝试用makeKey方法将当前弹出框的window设置为keywindow,随之而来出现另一个问题,因为这个弹出框可能弹出多次,而弹出框的window会建立多次,可能上一次弹出框的window变成了keywindow,弹出框显示了,但是紧接着进行了第二次弹框,将弹出框的window设置成了keywindow,但是没有进行弹出,以第一个为准,这是就会出现键盘小时的情况,需要点击一下输入框才能弹出键盘。

二、解决方法
1、保存系统主要的keywindow
fileprivate let systemKeyWindow: UIWindow? = UIApplication.shared.keyWindow
2、弹出框显示的时候将当前的window设置为keywindow
(self.targetView as? UIWindow)?.makeKey() // 将当前view的window设置为key
3、弹出框隐藏的时候将之前隐藏keywindow恢复
self.systemKeyWindow?.becomeKey() // 将主window设置为key

参考文章

相关文章

网友评论

      本文标题:iOS11多window下键盘不显示问题

      本文链接:https://www.haomeiwen.com/subject/epvolxtx.html