被告知隐藏NSStatusItem的时间

时间:2011-10-12 20:11:10

标签: objective-c macos cocoa appkit nsstatusitem

我有一个使用NSStatusItem的应用。在小屏幕上,状态栏中没有太多空间。当用户切换到包含大量菜单项的应用程序时,我的状态项将被隐藏。有没有办法得到关于此的通知?

到目前为止我尝试了什么:

  • 我检查了是否有NSNotification被解雇:否
  • 我检查了statusView是否已从视图层次结构中移除:否
  • 我查了isHiddenOrHasHiddenAncestor:没有

这是我用来创建状态项的代码。

self.statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
MyStatusView *maView = [[[MyStatusView alloc] initWithFrame:CGRectMake(0, 0, 50, 22)] autorelease];
[statusItem setTitle:@"Ma Status Item"];
[statusItem setView:maView];

1 个答案:

答案 0 :(得分:1)

你很聪明地意识到当一个状态项被隐藏时,它的窗口将被移动到后台。

现在您正在寻找的通知是: NSWindowDidResignKeyNotification (或NSWindowDidResignMainNotification,具体取决于您申请的背景)

有关关键窗口和主窗口之间区别的明确说明,请参阅this