NSStatusItem应用程序焦点

时间:2014-10-14 11:53:54

标签: xcode macos nsstatusitem nspopover

我的菜单栏应用程序如何实现与1Password或Dropbox相同的行为:

  • 点击其菜单栏图标或弹出窗口不会窃取焦点,例如当我在例如TextEdit并打开1Password / Dropbox时,闪烁的光标消失但窗口本身不会进入后台,但我可以输入1Password的文本字段。
  • 即使他们没有首先关注焦点,但当我点击回到另一个应用程序时它们会消失

我通过使用带有MouseEnteredAndExited,AssumeInside和ActiveAlways选项的NSTrackingArea来了解鼠标在Dropbox popover表视图中是如何工作的。

我试图在从NSStatusItem打开的NSPopover中使用相同的行为。

2 个答案:

答案 0 :(得分:2)

我现在找到了解决方法。通过使用窗口级别为kCGPopUpMenuWindowLevelKey的非激活NSPanel,我可以获得相同的行为,我必须覆盖canBecomeKeyWindow才能返回true。

不幸的是,我还没有找到一种方法让NSPopover以这种方式行事,因为它不是NSWindow的子类。

答案 1 :(得分:0)

要设置您所描述的行为类型,请使用:

yourPopover.behavior = .transient