-1

我正在构建这个将位于菜单栏上的应用程序。

因此,就像通常使用此类应用程序所做的那样,您将 statusItem 菜单调整为您的应用程序的菜单。

该菜单上的项目触发第一响应者的操作,在我的例子中是该应用程序的 viewController。

这就是问题所在:如果应用程序处于活动状态,则此方法有效,但如果应用程序未处于活动状态或隐藏状态,则会失败。我猜菜单项触发的操作会触发到响应者链,但没有人在听,因为应用程序被隐藏或未激活。

在这种情况下我该怎么办?我应该创建一个单例并将该单例添加到响应者链中吗?我说单例是因为它总是会加载到内存中。这个单例必须是某个特殊类的子类吗?

如果此菜单中的操作应该触发 viewController 中的内容,该怎么办?

4

2 回答 2

0

您应该能够处理 AppDelegate 中的第一响应者,如果应用程序未处于活动状态,这应该可以工作。

于 2019-09-05T22:02:31.033 回答
0

请参阅NSEvent.addGlobalMonitorForEvents(matching:handler:)并注意讨论:

只有在启用了可访问性或您的应用程序在可访问性访问方面受到信任(请参阅 参考资料)时,才能监视与密钥相关的事件AXIsProcessTrusted()

于 2019-09-05T22:02:54.320 回答