iOS: как определить изменения состояния клавиши-модификатора на внешней клавиатуре? - PullRequest
0 голосов
/ 19 февраля 2019

Мое приложение имеет дополнительный пользовательский интерфейс, который позволяет пользователю удерживать клавиши-модификаторы (shift, option, command) на внешней клавиатуре, чтобы вызвать некоторые специфические поведения.(Этот опыт также будет отображаться на экране, когда клавиатура не подключена.)

UIKeyCommand требует ввода строки и запускается один раз при нажатии комбинации клавиш.Я хочу отслеживать изменения состояния только клавиш-модификаторов с течением времени, когда пользователь нажимает / отпускает их.

Существует ли iOS API, который позволяет мне отслеживать состояние клавиш-модификаторов на внешней клавиатуре?

1 Ответ

0 голосов
/ 20 февраля 2019

Вы пытались использовать пустую строку для ввода?

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)")
    }
}
...