【问题标题】:iOS: How do I detect modifier key state changes on an external keyboard?iOS:如何检测外部键盘上的修饰键状态变化?
【发布时间】:2019-07-13 08:22:57
【问题描述】:

我的应用有一个可选的用户体验,让用户可以按住外部键盘上的修饰键(shift、option、command)来引发一些特定的行为。 (当没有连接键盘时,这种体验也会在屏幕上提供。)

UIKeyCommand 需要输入字符串,并在按下组合键时触发一次。当用户按下/释放它们时,我想跟踪修饰键随时间的状态变化。

是否有一个 iOS API 可以让我跟踪外部键盘上修饰键的状态?

【问题讨论】:

    标签: ios keyboard modifier-key


    【解决方案1】:

    您是否尝试过使用空字符串作为输入?

    class ViewController: UIViewController {
        override var canBecomeFirstResponder: Bool {
            return true
        }
    
        override var keyCommands: [UIKeyCommand]? {
            return [
                UIKeyCommand(input: "", modifierFlags: [.shift], action: #selector(shiftPressed(key:))),
                UIKeyCommand(input: "", modifierFlags: [.alphaShift], action: #selector(capslockPressed(key:)))
            ]
        }
    
        @objc func shiftPressed(key: UIKeyCommand) {
            print("shift pressed \(key)")
        }
    
        @objc func capslockPressed(key: UIKeyCommand) {
            print("capslock pressed \(key)")
        }
    }
    

    【讨论】:

    • 我无法让这种方法发挥作用。如果我在输入中添加一些内容并尝试使键盘命令效果很好,那么我认为这种方法存在根本缺陷。
    猜你喜欢
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多