在按键时禁用WKWebView“ funk”声音,但允许输入输入字段

问题描述 投票:1回答:1

我的应用程序中有一个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
    }
swift macos webview wkwebview first-responder
1个回答
0
投票

您是否尝试过常规的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)
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.