ios - 我们如何知道 iPad 使用的是蓝牙键盘还是设备虚拟键盘?

标签 ios objective-c bluetooth keyboard

<分区>

我正在开发一个使用摩托罗拉 CS3070 条码扫描器的 iPad 应用程序。我使用 HID 配置文件连接扫描仪,iPad 将其视为蓝牙键盘。当扫描仪使用蓝牙连接到 iPad 时,如果我们关注应用程序内的任何文本字段,它不会打开设备虚拟键盘。这是预期的,因为设备将条码扫描器视为蓝牙键盘。

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

请让我知道是否可行或我可以尝试的任何其他建议。

提前致谢。

最佳答案

一种间接且 SDK 安全的方法是将文本字段设置为第一响应者。如果存在外部键盘,则不应发布 UIKeyboardWillShowNotification 本地通知。

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

UIKit 监听这个并相应地设置 UIKeyboardImpl.isInHardwareKeyboardMode 属性,但同样这是私有(private) API。

我从 here 得到了这个答案.

关于ios - 我们如何知道 iPad 使用的是蓝牙键盘还是设备虚拟键盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20641748/

相关文章:

iphone - 覆盖保存在 NSUserDefaults 中的值

ios - 如何像 iPad 中的故事书应用程序一样卷页

ios - NSInternalInconsistencyException - “请求 MSCollectionElementKindCurrentTimeHorizo​​ntalGridline 装饰 View 的布局属性

ios - 为什么我不能在我的 XIB 中转到 View Controller ?

c++ - 如何获取 txPower 从 RSSI 计算距离

ios - 调整背景视频 - SWIFT

Android 应用到应用通信

ios - 自定义 URL 方案参数

安卓蓝牙无法发现附近的设备

android - 低功耗蓝牙更改访问远程设备