【问题标题】:Handling external keyboard presses without showing keyboard on screen on iOS app处理外部键盘按下而不在 iOS 应用程序的屏幕上显示键盘
【发布时间】:2020-06-09 06:59:25
【问题描述】:

我有一个私人 iOS 应用程序,我想使用通过蓝牙连接的外部键盘来控制它。我不想在我的应用程序中出现任何UITextFieldUITextView,或者至少我不希望键盘一直显示。有没有办法让我从物理键盘收听这些键盘事件?谢谢。

【问题讨论】:

标签: ios swift keyboard remote-control


【解决方案1】:

UIKeyCommands

要从键盘监听按键,您可以覆盖 ViewController 上的 keyCommands 变量(它是一个数组,因此您可以放置​​许多快捷方式):

override var keyCommands: [UIKeyCommand]? {
    return [
        UIKeyCommand(input: "Q",
                     modifierFlags: [],
                     action: #selector(self.close),
                     discoverabilityTitle: "Close app")
    ]
}

func close() {
    exit(0)
}

输入是使用的关键,例如CMD+Q(只放Q)。 Action 是要调用的选择器,discoverabilityTitle 是快捷方式的标题,例如“关闭应用程序”。当用户按住 CMD 键时,它将显示在 iPad 中。

它仅适用于 CMD 键和其他特殊键:

UIKeyInputUpArrow
UIKeyInputDownArrow
UIKeyInputLeftArrow
UIKeyInputRightArrow
UIKeyInputEscape

【讨论】:

  • 我还尝试在 iPad/iPhone 上处理键盘事件以进行游戏。您的解决方案解决了我的问题!想知道你是否知道如何检测“key-down”和“key-up”状态。例如,游戏需要检测当前是否按下或释放了方向键和 Enter 键,以便操纵宇宙飞船或火力武器。我还没有找到答案。
【解决方案2】:

这对我很有帮助:https://www.avanderlee.com/swift/uikeycommand-keyboard-shortcuts/

我必须添加 canBecomeFirstResponder 覆盖才能使其正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-31
    • 2018-12-18
    • 2019-12-01
    • 2015-04-30
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    • 1970-01-01
    相关资源
    最近更新 更多