我的应用程序使用a UIAccessoryView为虚拟键盘提供额外的键盘功能(例如向前/向后选项卡和箭头键),但即使存在物理键盘(附件出现在屏幕底部),也会导致UIKeyboardDidShowNotification触发.
我想检查在处理UIKeyboardWillShowNotification时是否附加物理键盘,以防止出现附件视图并防止我的自定义视图向上滚动(为不存在的虚拟键盘腾出空间).
我已经尝试过检查UIKeyboardFrameEndUserInfoKey密钥,但它会返回虚拟键盘的实际大小,尽管没有显示任何内容.
有没有办法检测物理键盘的存在,以防止这种不必要的行为?
嗯,情节变浓了.
我尝试通过从Responder对象的inputAccessoryView属性返回nil来禁用输入附件,该属性触发键盘.这会抑制UIKeyboardWillShowNotification并且UIKeyboardDidShowNotification当存在物理键盘时,但在没有这样的键盘时保留这些通知.到目前为止都很好.
然后我尝试仅在UIKeyboardWillShowNotification收到后重新启用inputAccessoryView .这仅在需要虚拟键盘时触发,因此应允许我在这些情况下重新引入附件视图.或者我想.
不幸的是,它似乎在OS不检查inputAccessoryView 之后 UIKeyboardWillShowNotification,所以它不能显示在需要的时候附属视图:O(
这让我有两个选择:
不是一个很好的选择,所以我仍然希望看到是否有其他人解决了这个问题!