如何在iPad上检测智能/外接键盘?

时间:2019-02-14 18:45:33

标签: ios ipad keyboard external-accessory smart-keyboard

连接(智能)键盘后如何获得通知?

某些情况: 我正在使用一项功能,该功能根据是否连接了iPad Pro智能键盘或其他外接键盘(例如Pages)自动显示和隐藏我的软件键盘。我已经看到this的答案,但这仅在选择了文本字段时适用。经过大量的搜寻之后,我偶然发现了Apple的ExternalAccessory类,您可以询问连接的设备,然后检查这些设备是什么。

我尝试了此操作的基本实现,但无法在连接了智能键盘的iPad Pro上使用它(是的,我确定它已连接,因为我可以看到键入的字母出现在屏幕上)。

首先,文档说您可以通过蓝牙和闪电检测到设备,我只希望它也包括智能键盘连接器。我已经启用了项目的无线附件配置功能。<​​/ p>

第二,需要将UISupportedExternalAccessoryProtocols键添加到其info.plist中,然后需要指定连接了哪些协议。似乎没有记录哪些协议,也不是针对苹果自己的设备。我碰到了一个提到iAP2蓝牙协议的教程,所以我添加了这个协议,然后希望能做到最好。

我的代码

由于我还没有正确设置项目配置,因此我也没有添加太多代码。我尝试过:

func printAllAccessories() {
    for device in EAAccessoryManager.shared().connectedAccessories {
        print("connected device with name: ", device.name)
    }
}

但是注意到似乎有联系。

底线

在iOS应用中获取外部键盘通知的过程(包括项目配置)如何?

似乎没有关于此在线内容的任何详尽文档,因此在这里获得它可能很好。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

首先,这不起作用,因为智能连接器未使用蓝牙连接到设备。您可以在此页面Use your Smart Keyboard Folio or Smart Keyboard with iPad Pro上了解更多相关信息。

第二件事是苹果的智能键盘和外接键盘完全不同。 Apple Smart Keyboard可用作iPad保护壳和iPad键盘。外部键盘仅用作键盘,而不能用作其他任何键盘。

因此我们可以得出结论,当您使用Smart Connector将Smart Keyboard连接到iPad时,iPad会将其视为iPad保护套,从而为您的iPad提供保护,并且没有其他会影响软件的功能(请尝试输入或使用任何快捷方式,都将无效)。 iPad仅在将其折叠在打字位置时才会将智能键盘识别为键盘。这是与外接键盘的主要区别。通过蓝牙连接后,外部键盘将立即被识别。

仅当外部键盘通过蓝牙连接或您的智能键盘处于键入位置时,Pages应用才会隐藏键盘。如果智能键盘已连接到智能连接器,并且处于键入位置,则在将其折叠到键入位置之前,仍然会有软件键盘。这意味着iOS将处理隐藏和显示键盘。

要处理在硬件键盘上执行的按键操作,可以参考此类UIKeyCommand