Обнаружение изменения единственного ключа-модификатора в UIKit для Mac (Catalyst)

Я портирую приложение iOS на MacOS с помощью UIKit для Mac, также известного как iPad Apps для Mac или Project Catalyst.

Приложение использует keyCommands из UIKit для обнаружения нажатия одной клавиши-модификатора:

UIKeyCommand(input: "", modifierFlags: .shift, action: #selector(singleShift))

Этот код отлично работает на iPad с внешней клавиатурой, событие запускается при каждом нажатии ⇧. Однако это не работает в MacOS, хотя одиночные события без модификатора и комбинации модификатора + немодификатора работают.

Как добиться желаемого поведения и получать уведомления о ключевых событиях с одним модификатором?

Или, может быть, мне стоит просто отказаться от UIKeyCommand и попробовать UIGestureRecognizer вместо этого?


person Dmitriy    schedule 26.09.2019    source источник


Ответы (1)


Возможно, это не ваша проблема, убедитесь, что у вас нет приложений с клавиатурой или приложений, которые перехватывают ввод с клавиатуры. У меня была такая проблема, когда у меня были установлены элементы Karibeaner.

В противном случае, если это ограничение катализатора, подумайте о том, чтобы обернуть более стабильный API из набор приложений или используйте UIGestureRecognizer.

person Matthew Weldon    schedule 19.02.2020
comment
UIGestureRecognizer (насколько мне известно) не предоставляет способ обнаружения клавиш-модификаторов. Я что-то упускаю? Мой обходной путь теперь заключается в том, что вы предлагаете просто загрузить пакет AppKit. Хотя было бы неплохо иметь возможность делать это в UIKit. - person Confused Vorlon; 19.02.2020
comment
Я думаю, что вы правы, мое предложение было основано на том, что OP говорит, что они могут использовать UIGestureRecognizer в качестве обходного пути, я не знал о его способности распознавать ключи мода - person Matthew Weldon; 19.02.2020
comment
@ConfusedVorlon UIGestureRecognizer предоставляет свойство .modifierFlags. - person Minsheng Liu; 14.05.2020
comment
@MinshengLiu - красивое место. Добавлено в 13.4 - возможно, Apple послушает;) - person Confused Vorlon; 14.05.2020
comment
@ConfusedVorlon Не осознавал, что это было так ново. Тогда мне действительно повезло! - person Minsheng Liu; 19.05.2020