前言
当键盘和弹框同时存在的时候,如图,如果不做处理,键盘总是会处在窗口的最前端,遮盖住弹框。与实际想要的结果:弹窗置于键盘之上不符。上家公司遇到这种情况时,就简单的说了句无法实现,应付了事(主要是比较烦感不做作的产品每次修改需求从来就是用户体验不好 😳,鬼知道没有进行调研的用户体验到底是神马)。今天又遇到了这种情况,秉着对公司负责也对自己负责的态度,查看了应用下的 window 操作。
IMG_4825.PNG
出现键盘置于弹框之上的原因
- 系统键盘所在的 window 优先级是最高的,(了解到这,如果你单纯的以为,修改弹窗的 windowLevel == MAXFLOAT 就能解决问题。。。。。。哈哈,孩子,你还是太年轻啦~~~ )
- 经打印,得知:iOS 9 之前,键盘是置于 UITextEffectsWindow 上的;iOS 9 之后,在 UIRemoteKeyboardWindow 上
-
下图是跑在 Xcode 8.3.3,模拟器 版本 iOS 10.3 上的结果
35AAA6A7-8AE4-4A8E-90F8-B3B0DAB7BF20.png
D155C526-0759-4177-8C53-6BF2894A3669.png
结论
在需要的时机,将弹框加到键盘的 window 上即可。如图展示
C98C984B-99D8-4BA3-98BF-C9260127C200.png