如何在macOS应用程序中提示辅助功能(来自AppDelegate)



我正在构建一个需要监控全局击键的macOS应用程序。因此,全局事件侦听器将是:

NSEvent.addGlobalMonitorForEvents(matching: NSEvent.EventTypeMask.keyDown) { (event) in
print(event.keyCode)
}

但这并没有像本文中提到的那样。我确实尝试了线程中给出的答案,添加了:

let options: NSDictionary = [kAXTrustedCheckOptionPrompt.takeUnretainedValue() as String : true]
let accessEnabled = AXIsProcessTrustedWithOptions(options)

if !accessEnabled {
print("Access Not Enabled")
} else {
print("Access Granted")
}

这会提示对话框请求访问,但由于这是一个异步进程,因此授予访问权限仍然不会将线程移动到可以监视击键的位置。此外,每次启动应用程序时都会弹出这个对话框,说明如何在没有麻烦的情况下策划这种优雅的无障碍请求,因为据我搜索,任何地方都没有合适的文档。

我意识到这是一个Xcode错误。如果SwiftUI预览提供程序与实际构建同时运行,则会导致与macOS的可访问权限混淆。

在清理派生数据目录后,应用程序将按预期工作。你可以用做到这一点

rm -rf ~/Library/Developer/Xcode/DerivedData

最新更新