在 keydown 上禁用 WKWebView “funk”声音,但允许输入输入字段
Posted
技术标签:
【中文标题】在 keydown 上禁用 WKWebView “funk”声音,但允许输入输入字段【英文标题】:Disable WKWebView "funk" sound on keydown but allow typing input fields 【发布时间】: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
【问题讨论】:
【参考方案1】:您是否只尝试过普通的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)
【讨论】:
以上是关于在 keydown 上禁用 WKWebView “funk”声音,但允许输入输入字段的主要内容,如果未能解决你的问题,请参考以下文章