如何在iOS上通过硬件键盘检测按键上/下键事件?

mse*_*don 5 iphone keyboard ipad ios

虽然在SO上发布了许多有关如何使键盘工作的方法,例如,如何在iOS 7下使用蓝牙键盘支持上下箭头键,或者如何接收iPhone键盘事件,但均未记录。

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

Ben*_*dle 8

从 iOS 13.4 开始,由于引入了UIKey,现在可以做到这一点,pressesBegan当按下键盘键时,它现在包含在事件中。Sundell 的 Swift指南包含了一些示例。这是相关的位:

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)
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @MrStahlfelge 我刚刚使用 iOS 13.2 进行了测试,它的工作没有任何特殊之处。较低的 iOS 版本永远不会在 UIPress 对象中包含“UIKey”值。 (2认同)