如何从iOS上的硬件键盘检测到按键/按键事件?

时间:2014-02-27 23:59:54

标签: ios iphone ipad keyboard

虽然在SO上发布了许多关于黑客键盘工作的方法,例如How can I support the up and down arrow keys with a Bluetooth keyboard under iOS 7Receive iPhone keyboard events,但没有一个方法可以记录。

是否可以使用公共API从iOS中的硬件键盘(例如蓝牙)检测keyUp:/ keyDown:输入事件?

2 个答案:

答案 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作为一种现实的计算环境的兴趣,但是直到有人发布更好的答案之前,事实是,您应该接受键盘处理作为纯输入法冲动。显然,触摸如此坚决地胜出,您将再也无法重新创建检测持续按键的功能。很好。