У меня в приложении есть WKWebView, который содержит элементы ввода и текстовые области. Также он поддерживает некоторые ключевые события, скажем, AB C. Когда я нажимаю эти клавиши, не фокусируя элемент ввода, я слышу системный звук в стиле macos - WebApp также запускает команду клавишей.
Когда я пытаюсь отключить звук фанка, используя localMonitor в Swift и «ловить» нажатия клавиш на этих клавишах, они больше не «фанк», но также не работают при наборе в полях ввода или текстовые. Таким образом, они были полностью отключены.
Как я могу предотвратить звук фанка (может быть, полностью для всех нажатий клавиш), но также использовать эти клавиши (все клавиши) в моем веб-представлении?
Вот что я протестировали:
override func viewDidLoad() {
super.viewDidLoad()
// ...
NSEvent.addLocalMonitorForEvents(matching: .keyDown) {
if self. keyDownPressed(with: $0) {
return nil
} else {
return $0
}
}
}
func keyDownPressed(with event: NSEvent) -> Bool {
print("caught a key down: \(event.keyCode)")
if event.keyCode == 48 { return true }
if event.keyCode == 34 { return true }
if event.keyCode == 38 { return true }
if event.keyCode == 40 { return true }
if event.keyCode == 4 { return true }
if event.keyCode == 1 { return true }
if event.keyCode == 3 { return true }
if event.keyCode == 32 { return true }
return false
}