我们怎么知道iPad是使用蓝牙键盘还是设备虚拟键盘?

时间:2013-12-17 18:18:02

标签: ios objective-c bluetooth keyboard

我正在开发一款使用Motorola CS3070条码扫描器的iPad应用程序。我使用HID配置文件连接扫描仪,它被iPad视为蓝牙键盘。当扫描仪使用蓝牙连接到iPad时,如果我们专注于应用程序内的任何文本字段,它将无法打开设备虚拟键盘。这是因为设备将条形码扫描器视为蓝牙键盘。

扫描时如果扫描仪断开连接,将显示设备虚拟键盘。我想要的是,当扫描仪断开连接时,我需要从某些事件中获取该信息,并向用户显示扫描仪已断开连接的弹出/警报。我想如果有办法知道何时显示设备虚拟键盘或应用程序使用蓝牙键盘,我们可以使用该信息来显示弹出窗口。

请告诉我是否有可能或我可以尝试的任何其他建议。

提前致谢。

1 个答案:

答案 0 :(得分:1)

间接和SDK安全的方法是使文本字段成为第一响应者。如果存在外接键盘,则不会发布 UIKeyboardWillShowNotification 本地通知。

您可以收听“GSEventHardwareKeyboardAttached”(kGSEventHardwareKeyboardAvailabilityChangedNotification) Darwin通知,但这是一个私有API,因此如果您使用此应用程序,您的应用可能会被拒绝。要检查外部硬件是否存在,请使用私有 GSEventIsHardwareKeyboardAttached()功能。

UIKit会监听并相应地设置UIKeyboardImpl.isInHardwareKeyboardMode属性,但这又是私有API。

我从here得到了这个答案。