Как быстро перехватить событие нажатия кнопки с внешней клавиатуры, когда активен полный доступ к клавиатуре? ⇐ 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. Никакой реакции при включении.
Что я могу сделать, чтобы он работал с включенным «Полным доступом с клавиатуры»?
У меня есть следующий код в 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. Никакой реакции при включении.
Что я могу сделать, чтобы он работал с включенным «Полным доступом с клавиатуры»?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Невозможно перехватить событие нажатия кнопки «Домой» на панели инструментов
Anonymous » » в форуме Android - 0 Ответы
- 36 Просмотры
-
Последнее сообщение Anonymous
-
-
-
React Native: как выбрать следующий TextInput после нажатия кнопки «Далее» на клавиатуре?
Anonymous » » в форуме IOS - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-