Stu*_*rtW 7 keyboard xcode ipad
我的应用程序使用a UIAccessoryView为虚拟键盘提供额外的键盘功能(例如向前/向后选项卡和箭头键),但即使存在物理键盘(附件出现在屏幕底部),也会导致UIKeyboardDidShowNotification触发.
我想检查在处理UIKeyboardWillShowNotification时是否附加物理键盘,以防止出现附件视图并防止我的自定义视图向上滚动(为不存在的虚拟键盘腾出空间).
我已经尝试过检查UIKeyboardFrameEndUserInfoKey密钥,但它会返回虚拟键盘的实际大小,尽管没有显示任何内容.
有没有办法检测物理键盘的存在,以防止这种不必要的行为?
嗯,情节变浓了.
我尝试通过从Responder对象的inputAccessoryView属性返回nil来禁用输入附件,该属性触发键盘.这会抑制UIKeyboardWillShowNotification并且UIKeyboardDidShowNotification当存在物理键盘时,但在没有这样的键盘时保留这些通知.到目前为止都很好.
然后我尝试仅在UIKeyboardWillShowNotification收到后重新启用inputAccessoryView .这仅在需要虚拟键盘时触发,因此应允许我在这些情况下重新引入附件视图.或者我想.
不幸的是,它似乎在OS不检查inputAccessoryView 之后 UIKeyboardWillShowNotification,所以它不能显示在需要的时候附属视图:O(
这让我有两个选择:
不是一个很好的选择,所以我仍然希望看到是否有其他人解决了这个问题!
(这个答案是由Sean Heber在Apple论坛上提出的)
当你得到一个UIKeyboardDidShowNotification,而不是使用给定的框架时UIKeyboardFrameEndUserInfoKey,只需测试视图的附件视图的位置并使用它.我所做的只是检查附件视图的框架是什么,并将其转换为我自己的视图的坐标空间.然后我可以轻松地使用该框架来决定做什么.
注意:当使用蓝牙键盘的弹出按钮显示/隐藏屏幕键盘时,似乎UIKit UIKeyboardDidShowNotification再次发送但不是a UIKeyboardWillHideNotification.这也是一个令人困惑的不一致,但上述解决方法仍然有效,因为系统将在屏幕键盘上滑动时更改inputAccessoryView的框架,因此您仍然可以相应地调整内容.
| 归档时间: |
|
| 查看次数: |
4042 次 |
| 最近记录: |