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

Is it possible to detect key presses and releases on iPad Smart Keyboard?

我是 iPad 的开源合成器 AudioKit Synth One 的开发者之一,有人给我们留下了评论,要求通过物理智能键盘而不是屏幕键盘。类似于 Mac 的 "Musical Typing" 上的 Garageband 或 Logic Pro 的功能。

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

可以通过重写 UIResponderkeyCommands 属性(其中 UIViewController 是一个子类)来响应来自外部键盘的按键操作,但是,您不会能够检测不同的动作,例如,按下释放

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

Swift:

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
}