Как обнаружить команду C в моем приложении (Swift)?

У меня есть приложение-калькулятор, написанное на Swift, и оно полностью совместимо с пользовательскими сочетаниями клавиш. Я пытаюсь вызвать метод, когда пользователь нажимает Command + C, однако всякий раз, когда я пытаюсь назначить следующий пользовательский ярлык, он просто не работает:

UIKeyCommand(input: "c", modifierFlags: [.command], action: #selector(commandCAction))

Метод commandCAction никогда не вызывается, в отличие от других ярлыков. Я предполагаю, что это связано с тем, что Apple зарезервировала этот ярлык. Существуют ли какие-либо наблюдатели или методы, которые я могу использовать для обнаружения нажатия пользователем Command + C на физической клавиатуре?


person ThiagoAM    schedule 20.12.2017    source источник


Ответы (2)


В документации для UIKeyCommand говорится: «Ключевые команды, которые сопоставляются с известными системными событиями (такими как вырезание, копирование и вставка), автоматически перенаправляются на соответствующие методы ответчика».

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

person Phillip Mills    schedule 20.12.2017

Я нашел проблему, по какой-то причине это не работает на моем симуляторе:

UIKeyCommand(input: "c", modifierFlags: [.command], action: #selector(commandCAction))

Однако, когда я попробовал на физическом устройстве, это сработало! Так что это решение для тех, у кого такая же проблема, как у меня.

person ThiagoAM    schedule 20.12.2017