是否可以检测 iPad 智能键盘上的按键和释放?

Posted

技术标签:

【中文标题】是否可以检测 iPad 智能键盘上的按键和释放?【英文标题】:Is it possible to detect key presses and releases on iPad Smart Keyboard? 【发布时间】:2018-07-13 08:18:13 【问题描述】:

我是用于 iPad 的开源合成器 AudioKit Synth One 的开发人员之一,有人给我们留下了评论,要求通过物理智能键盘而不是屏幕键盘实现合成器的播放。类似于 Mac 的“音乐打字”上的 Garageband 或 Logic Pro 的功能。

为此,我需要能够响应按键和按键释放。有谁知道 Apple 的 API 目前是否可以做到这一点?

【问题讨论】:

【参考方案1】:

可以通过覆盖UIResponderkeyCommands 属性(其中UIViewController 是子类)来响应来自外部键盘的按键,但是,您将无法检测到不同的操作,例如,按下键松开键

覆盖应该捕获此事件的UIViewController 的此属性

斯威夫特:

override var keyCommands: [UIKeyCommand]? 
    return [
        UIKeyCommand(input: "Z",
                     modifierFlags: [],
                     action: #selector(didPressZ)),
        UIKeyCommand(input: "X",
                     modifierFlags: [],
                     action: #selector(didPressX))
        ] /// etc., return UIKeyCommand for each key you want to react to

【讨论】:

我刚刚实现了你的建议,它确实可以工作。它告诉我何时按下一个键。但是,在按住按键时重复按键是不可预测的,所以我必须要聪明一点,除非有人知道键盘状态的后门。谢谢!

以上是关于是否可以检测 iPad 智能键盘上的按键和释放?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 6+ 上检测用户何时强制隐藏 iPad 上的键盘

Javascript - 带蓝牙键盘的 iPad Tab 键检测

obj -c IOS检测大写锁定按键事件

iOS:如何检测硬件蓝牙键盘上的转义/控制键?

在鼠标单击期间防止键盘事件(未释放)

AVR单片机教程——矩阵键盘