我的应用程序中有一个WKWebView,其中包含输入元素和文本区域。它还支持一些按键事件,比如说A BC。当我在不聚焦输入元素的情况下按下这些按键时,我可以听到macOS的时髦声音– WebApp还会通过按键触发命令。
[当我尝试在Swift中使用localMonitor禁用“ funk”声音时,这些按键上的按键不会“捕获”,但是在输入字段或文本区域中键入时,它们也不再起作用。因此他们完全被禁用。
我该如何防止放音(可能完全针对所有按键),但又要在我的网络视图中使用这些按键(所有按键)?
这是我测试过的内容:
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
}
您是否尝试过常规的keyDown
?输入字段仍然可以正常工作。
override func keyDown(with event: NSEvent) {
if [48, 34, 40, 4, 1, 3, 32].contains(event.keyCode) {
// no funk
} else {
super.keyDown(with: event)
}
}