对于其他应用程序,如 Dropbox 和 1Password,如果您使用 F3 打开 Exposé/Mission Control 以切换空间,则单击顶部栏中的 NSStatusItem 时打开的弹出框会自动隐藏(然后重新显示)。
这是如何实现的?我想不出一个好的方法来监听 F3 事件,就像你可以左/右键单击一样,并且 1Password 可以工作,尽管为这样的东西启用了辅助功能访问。
想法?
对于其他应用程序,如 Dropbox 和 1Password,如果您使用 F3 打开 Exposé/Mission Control 以切换空间,则单击顶部栏中的 NSStatusItem 时打开的弹出框会自动隐藏(然后重新显示)。
这是如何实现的?我想不出一个好的方法来监听 F3 事件,就像你可以左/右键单击一样,并且 1Password 可以工作,尽管为这样的东西启用了辅助功能访问。
想法?
这不是一个很好的答案,但我最终放弃了 NSPopover。NSWindow 有一个属性 'collectionBehavior',它控制 NSWindow 相对于其他空间和 Exposé 的行为。我想要的行为(以及我在 1Password 和 Dropbox 中注意到的)可以用window.collectionBehavior = [.transient, .ignoresCycle]
. .transient
使得当您打开 Exposé 时窗口自动隐藏,并在您关闭它时重新打开,并且.ignoresCycle
在切换窗口时使其不像真正的窗口。然后,我只在切换 NSStatusBar 项时显示它,否则将其隐藏。