【问题标题】:How to automatically close an NSPopover in NSStatusBar on Exposé/Mission Control如何在 Exposé/Mission Control 的 NSStatusBar 中自动关闭 NSPopover
【发布时间】:2018-09-10 18:13:37
【问题描述】:
对于其他应用程序,例如 Dropbox 和 1Password,如果您使用 F3 打开 Exposé/Mission Control 以切换空间,则单击顶部栏中的 NSStatusItem 时打开的弹出框会自动隐藏(然后重新显示)。
这是如何实现的?我想不出一个像左/右键一样监听 F3 事件的好方法,尽管启用了辅助功能访问 for something like this,1Password 仍然有效。
想法?
【问题讨论】:
标签:
macos
nsstatusitem
nspopover
apple-expose
【解决方案1】:
这不是一个很好的答案,但我最终放弃了 NSPopover。 NSWindow 有一个属性“collectionBehavior”,它控制 NSWindow 相对于其他空间和 Exposé 的行为。我想要的行为(我在 1Password 和 Dropbox 中注意到的)可以用window.collectionBehavior = [.transient, .ignoresCycle] 复制。 .transient 使它在您打开 Exposé 时自动隐藏,并在您关闭它时重新打开,.ignoresCycle 使其在切换窗口时不像真正的窗口。然后我只在切换 NSStatusBar 项时显示它,否则隐藏它。