【问题标题】:How can we know if iPad is using bluetooth keyboard or device virtual keyboard? [duplicate]我们如何知道 iPad 使用的是蓝牙键盘还是设备虚拟键盘? [复制]
【发布时间】:2014-01-05 15:55:23
【问题描述】:
我正在开发一个使用摩托罗拉 CS3070 条形码扫描仪的 iPad 应用程序。我将扫描仪连接为使用 HID 配置文件,它被 iPad 视为蓝牙键盘。当扫描仪使用蓝牙连接到 iPad 时,如果我们专注于应用程序内的任何文本字段,它不会打开设备虚拟键盘。这是预期的,因为设备将条形码扫描仪视为蓝牙键盘。
如果扫描仪断开连接进行扫描,将显示设备虚拟键盘。我想要的是,当扫描仪断开连接时,我需要从某个事件中获取该信息并向用户显示扫描仪断开连接的弹出/警报。我认为如果有办法知道何时显示设备虚拟键盘或应用程序正在使用蓝牙键盘,我们可以使用该信息来显示弹出窗口。
如果可行或我可以尝试任何其他建议,请告诉我。
提前致谢。
【问题讨论】:
标签:
ios
objective-c
bluetooth
keyboard
【解决方案1】:
一种间接且对 SDK 安全的方法是使文本字段成为第一响应者。如果存在外接键盘,则不会发布 UIKeyboardWillShowNotification 本地通知。
您可以收听 "GSEventHardwareKeyboardAttached"(kGSEventHardwareKeyboardAvailabilityChangedNotification) Darwin 通知,但这是一个私有 API,因此如果您使用它,您的应用可能会被拒绝。要检查外部硬件是否存在,请使用私有 GSEventIsHardwareKeyboardAttached() 函数。
UIKit 监听这个并相应地设置 UIKeyboardImpl.isInHardwareKeyboardMode 属性,但这又是私有 API。
我从here得到这个答案。