【发布时间】:2020-04-22 19:37:40
【问题描述】:
我的应用程序中有一个 WKWebView,其中包含输入元素和文本区域。它还支持一些按键事件,比如 A B C。当我按下这些键而不聚焦输入元素时,我可以听到 macOS 的放克系统声音——WebApp 也会通过按键触发命令。
当我尝试在 Swift 中使用 localMonitor 禁用放克声音并“捕捉”这些键上的按键时,它们不再“放克”,但在输入字段或文本区域时它们也不起作用。所以他们完全被禁用了。
我怎样才能防止放克声音(可能完全适用于所有按键),同时在我的网页视图中使用这些按键(所有按键)?
这是我测试过的:
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
}
【问题讨论】:
标签: swift macos webview wkwebview first-responder