被告知隐藏NSStatusItem的时间

sti*_*igi 8 macos cocoa objective-c 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];
Run Code Online (Sandbox Code Playgroud)

hol*_*ow7 0

您很聪明地意识到,当隐藏状态项时,其窗口将移至背景中。

现在您正在寻找的通知是: NSWindowDidResignKeyNotification (或NSWindowDidResignMainNotification取决于您的应用程序的上下文)

有关键窗口和主窗口之间差异的清晰说明,请参阅