Как быстро перехватить событие нажатия кнопки с внешней клавиатуры, когда активен полный доступ к клавиатуре?IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Гость
 Как быстро перехватить событие нажатия кнопки с внешней клавиатуры, когда активен полный доступ к клавиатуре?

Сообщение Гость »


У меня есть следующий код в ViewController быстрого приложения для iOS:

класс ViewController: UIViewController { переопределить функцию viewDidLoad() { супер.viewDidLoad() // Выполняем любые дополнительные настройки после загрузки представления. } переопределить func pressesBegan(_ presses: Set, с событием: UIPressesEvent?) { пусть keyCode = presses.first?.key?.keyCode.rawValue print("Нажата клавиша с кодом:" ) печать (код ключа) } } Метод pressesBegan из UIResponder-Class перезаписывается. После запуска приложения на устройстве iOS, подключенном к клавиатуре, можно набирать кнопки на подключенной клавиатуре, а значения HID клавиш распечатываются в консоли, и все работает нормально.

Когда я включаю «Полный доступ к клавиатуре» в Настройки > Специальные возможности > Клавиатуры устройства iOS, распознавание некоторых клавиш, таких как пробел и вкладка, больше не работает. Похоже, что «Полный доступ к клавиатуре» устройства iOS обрабатывает нажатия кнопок и поэтому не достигает метода pressesBegan.

Я также пытался обрабатывать эти клавиши как UIKeyCommands. В следующем примере показано, как я использовал его для пробела:

класс ViewController: UIViewController { переопределить функцию viewDidLoad() { супер.viewDidLoad() // Выполняем любые дополнительные настройки после загрузки представления. } переопределить var keyCommands: [UIKeyCommand]? { пусть команды = [ UIKeyCommand(ввод: " ", modifierFlags: [], действие: #selector(spacebarAction)), ] // если ваша цель — только iOS 15+, вы можете удалить `if` и всегда применять это правило если #available(iOS 15, *) { команды.forEach { $0.wantsPriorityOverSystemBehavior = true } } команды возврата } @objc func spacebarAction() { print("команда работает.") } } То же самое поведение. Когда «Полный доступ с клавиатуры» отключен, нажатие клавиши пробела распознается и выполняется код внутри spacebarAction. Никакой реакции при включении.

Что я могу сделать, чтобы он работал с включенным «Полным доступом с клавиатуры»?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»