虽然在SO上发布了许多关于黑客键盘工作的方法,例如How can I support the up and down arrow keys with a Bluetooth keyboard under iOS 7或Receive iPhone keyboard events,但没有一个方法可以记录。
是否可以使用公共API从iOS中的硬件键盘(例如蓝牙)检测keyUp:/ keyDown:输入事件?
答案 0 :(得分:6)
从iOS 13.4开始,由于引入了UIKey
,现在已经可以实现此功能。现在,按下键盘键时,pressesBegan
事件中就包含了该事件。 Swift By Sundell的this guide涵盖了一些示例。这是相关的位:
class EditorViewController: UIViewController {
...
override func pressesBegan(_ presses: Set<UIPress>,
with event: UIPressesEvent?) {
super.pressesBegan(presses, with: event)
presses.first?.key.map(keyPressed)
}
override func pressesEnded(_ presses: Set<UIPress>,
with event: UIPressesEvent?) {
super.pressesEnded(presses, with: event)
presses.first?.key.map(keyReleased)
}
override func pressesCancelled(_ presses: Set<UIPress>,
with event: UIPressesEvent?) {
super.pressesCancelled(presses, with: event)
presses.first?.key.map(keyReleased)
}
}
答案 1 :(得分:2)
振作起来。答案是-这是不可能的。
是的。是2020年,也就是我最初发布此问题的6年后,答案仍然是-虽然iOS内部处理keyup / keydown消息,但截取它们只是不合法的。
我不知道这表示苹果对iOS作为一种现实的计算环境的兴趣,但是直到有人发布更好的答案之前,事实是,您应该接受键盘处理作为纯输入法冲动。显然,触摸如此坚决地胜出,您将再也无法重新创建检测持续按键的功能。很好。