macOS 和 SwiftUI 2:关闭击键蜂鸣的最简单方法
macOS & SwiftUI 2: simplest way to turn off beep on keystroke
以下简单的 macOS 应用程序是用 SwiftUI 2.0 编写的。
import SwiftUI
@main
struct TempApp: App {
var body: some Scene {
WindowGroup { ContentView() }
}
}
struct ContentView: View {
var body: some View {
Text("Hello, beep!").padding()
}
}
在前台运行时,此应用会在某些击键(如“a”)时发出错误蜂鸣声。抑制此蜂鸣声的最简单方法是什么?
可以找到一个 Xcode 项目说明这个(和答案)here。
SO 上有很多 older related questions,但其中 none 专门针对 Swift 2.0 中的此操作。
您可以通过在顶层为 .keyDown
事件添加本地监视器来抑制蜂鸣声。这可以简单地在 ContentView.init()
中完成,像这样:
struct ContentView: View {
var body: some View {
Text("Hello, silence!").padding()
}
init() {
NSEvent.addLocalMonitorForEvents(matching: .keyDown) { _ in return nil }
}
}
此技术的灵感来自此answer。
以下简单的 macOS 应用程序是用 SwiftUI 2.0 编写的。
import SwiftUI
@main
struct TempApp: App {
var body: some Scene {
WindowGroup { ContentView() }
}
}
struct ContentView: View {
var body: some View {
Text("Hello, beep!").padding()
}
}
在前台运行时,此应用会在某些击键(如“a”)时发出错误蜂鸣声。抑制此蜂鸣声的最简单方法是什么?
可以找到一个 Xcode 项目说明这个(和答案)here。
SO 上有很多 older related questions,但其中 none 专门针对 Swift 2.0 中的此操作。
您可以通过在顶层为 .keyDown
事件添加本地监视器来抑制蜂鸣声。这可以简单地在 ContentView.init()
中完成,像这样:
struct ContentView: View {
var body: some View {
Text("Hello, silence!").padding()
}
init() {
NSEvent.addLocalMonitorForEvents(matching: .keyDown) { _ in return nil }
}
}
此技术的灵感来自此answer。