是否可以检测 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】:可以通过覆盖UIResponder
的keyCommands
属性(其中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 上的键盘