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

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

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

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


person fbrereto    schedule 19.02.2019    source источник


Ответы (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)")
    }
}
person Bill    schedule 20.02.2019
comment
Мне не удалось заставить этот подход работать. Если я добавлю что-то к вводу и попробую, чтобы ключевые команды работали отлично, я думаю, что этот подход в корне ошибочен. - person KellyTheDude; 08.12.2019