Можно ли обнаружить нажатия и отпускания клавиш на iPad Smart Keyboard?

Я один из разработчиков AudioKit Synth One, синтезатора с открытым исходным кодом для iPad, и кто-то оставил нам отзыв с просьбой реализовать игру на синтезаторе через физическую смарт-клавиатуру вместо экранной клавиатуры. Функция, аналогичная Garageband или Logic Pro на Mac «Музыкальный набор». Музыкальный набор

Для этого мне нужно было бы иметь возможность реагировать на нажатия клавиш и отпускания клавиш. Кто-нибудь знает, возможно ли это в настоящее время с API Apple?


person Aurelius Prochazka    schedule 13.07.2018    source источник


Ответы (1)


Реагирование на нажатия клавиш с внешней клавиатуры возможно путем переопределения свойства keyCommands класса UIResponder (подклассом которого является UIViewController), однако вы не сможете обнаружить отдельные действия, такие как нажатие клавиши или клавиша.

Переопределите это свойство UIViewController, которое должно перехватывать эти события.

Быстрый:

override var keyCommands: [UIKeyCommand]? {
    return [
        UIKeyCommand(input: "Z",
                     modifierFlags: [],
                     action: #selector(didPressZ)),
        UIKeyCommand(input: "X",
                     modifierFlags: [],
                     action: #selector(didPressX))
        ] /// etc., return UIKeyCommand for each key you want to react to
}
person mag_zbc    schedule 13.07.2018
comment
Я только что реализовал то, что вы предлагаете, и это вроде как работает. Он сообщает мне, когда была нажата клавиша. Но это непредсказуемо в отношении повторения клавиш при удерживании клавиш, поэтому мне придется быть умным в этом, я думаю, если только кто-нибудь не знает о лазейке в состояние клавиатуры. Спасибо! - person Aurelius Prochazka; 13.07.2018