Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 我们如何知道iPad使用的是蓝牙键盘还是设备虚拟键盘?_Ios_Objective C_Bluetooth_Keyboard - Fatal编程技术网

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

Ios 我们如何知道iPad使用的是蓝牙键盘还是设备虚拟键盘?,ios,objective-c,bluetooth,keyboard,Ios,Objective C,Bluetooth,Keyboard,我正在开发一款使用摩托罗拉CS3070条形码扫描仪的iPad应用程序。我使用HID模式连接扫描仪,iPad将其视为蓝牙键盘。当扫描仪通过蓝牙连接到iPad上时,若我们关注应用程序中的任何文本字段,它将不会打开设备虚拟键盘。这是预期的,因为该设备将条形码扫描仪视为蓝牙键盘 扫描时,如果扫描仪断开连接,将显示设备虚拟键盘。我想要的是,当扫描器断开连接时,我需要从某个事件中获取该信息,并向用户显示一个弹出/警报,说明扫描器断开连接。我认为,如果有办法知道何时显示设备虚拟键盘或应用程序正在使用蓝牙键盘,

我正在开发一款使用摩托罗拉CS3070条形码扫描仪的iPad应用程序。我使用HID模式连接扫描仪,iPad将其视为蓝牙键盘。当扫描仪通过蓝牙连接到iPad上时,若我们关注应用程序中的任何文本字段,它将不会打开设备虚拟键盘。这是预期的,因为该设备将条形码扫描仪视为蓝牙键盘

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

请让我知道这是否可能或任何其他建议,我可以尝试


提前感谢。

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

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

UIKit侦听此消息并相应地设置UIKeyboardImpl.isInHardwareKeyboardMode属性,但这也是私有API


我从中得到了这个答案。

谢谢尼廷。它起作用了。