【发布时间】:2015-03-06 00:29:39
【问题描述】:
类似于这个问题:iPad: Detecting External Keyboard,我正在开发一个 iPad 应用程序,它使用带有自定义 inputAccessoryView 的文本字段来为虚拟键盘提供额外的功能。
但是,如果硬件键盘(例如蓝牙键盘)连接到设备,则软件键盘不会按预期显示,但由于某种原因,inputAccessoryView 仍然可见 em> 在屏幕底部。此外,即使使用硬件键盘进行输入,这似乎也会导致触发UIKeyboardDidShowNotification(因此向上移动我的视图以避免被实际上不存在的键盘遮挡)。
我找到了几种检测是否连接了硬件键盘的解决方案,但它们都在收到UIKeyboardDidShowNotification 之后检查状态,此时 inputAccessoryView 已经可见(例如How can I detect if an external keyboard is present on an iPad? )。
我正在寻找一种仅在未连接硬件键盘时才显示 inputAccessoryView 的方法。因此,我需要知道是否在UIKeyboardDidShowNotification 被触发之前连接了硬件键盘。
How can I detect if an external keyboard is present on an iPad? 此处提供的公认解决方案对我来说是没有选择的,因为它们使用私有 API,这可能会导致我的应用被拒绝。
【问题讨论】:
-
是您根本不希望使用硬件键盘输入附件视图的问题,还是屏幕元素像软件键盘一样移动的问题,即使只有附件视图?如果是后者,请确保仅将视图移动到足够的附件视图,而不是软件键盘的某些硬编码高度。
-
我不希望输入附件视图完全带有硬件键盘,第二点无论如何都应该变得无关紧要,因为不再发送通知
-
@RobK 实际上,当连接外接键盘时,通知仍然发送。当
UITextView/Field激活时,您会收到通知,只是系统将键盘保持在屏幕外。 -
@mbm29414 你是对的,这是我的错误假设。尽管如此,我现在使用不同的方法来计算键盘的 可见 部分,方法是使用
origin.y的UIKeyboardFrameEndUserInfoKey。 -
@RobK 这是个好方法。