我正在用Xcode / ObjC开发辅助MacOS应用。
它使用事件流来拦截击键。
当我从Xcode运行它时,我得到:
<input type="text" autoFocus='true' />
<input type="text" autoFocus={true} />
<input type="text" autoFocus />
我必须像这样去2019-07-05 06:20:32.423783+0300 mapper[8108:1191874] unable to create event tap. must run as root or add privileges for assistive devices to this app.
2019-07-05 06:20:32.423809+0300 mapper[8108:1191874] No Event tap in place! You will need to call listen after tapEvents to get events.
:
每次我修改一行代码并再次运行时,我都必须经历此检查和取消检查的过程。
这是一个非常笨拙的开发周期。
有什么办法可以避免这种情况?
答案 0 :(得分:0)
该项目使用的是具有4年历史的Xcode项目文件。
从新的 Cocoa App 模板开始并复制文件,在我第一次构建和运行时,现在会自动显示:
...,将我带到首选项窗格和上一个屏幕截图。随后的重建 NOT 不需要切换此对话框中的设置。仅当我“清理构建文件夹”时,此过程才会重复。
我的猜测是,行为的改善可能是因为新项目是从 Cocoa App 模板派生的(该模板从NSApplicationDelegate
继承了其基础对象,而旧项目则是从 Commandline App 模板(我不得不使用CFRunloop手动管理运行循环)。
Getting mouse coordinates on Mojave包含一个答案,其中提供了有关如何在授权中添加一行的说明。plist:
允许应用程序使用Accessibility API的权利是com.apple.private.tcc.allow权利(值为kTCCServiceAccessibility)。您可能会从名称中猜到它仅在Apple签名的二进制文件中被允许。