objective-c - 当 NSStatusItem 隐藏时被通知

标签 objective-c macos cocoa appkit nsstatusitem

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

到目前为止我尝试过的:

  • 我检查了是否触发了任何 NSNotification:否
  • 我检查了 statusView 是否已从 View 层次结构中删除:否
  • 我检查了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];

最佳答案

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

现在您要查找的通知是: NSWindowDidResignKeyNotification (或NSWindowDidResignMainNotification,具体取决于您的应用程序的上下文)

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

关于objective-c - 当 NSStatusItem 隐藏时被通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12026019/

相关文章:

cocoa - NSUserDefaults 和 registerDefault,标准行为?

objective-c - 如何禁用 AVPlayerView 中的鼠标滚轮事件?

objective-c - iOS从web读取Json并显示到tableView

ios - 创建核心数据实体期间的疯狂

c++ - Release模式下 OSX/AppleClang 上的 boost::container::flat_multimap 崩溃

multithreading - Mac OS 访问数据模型时是否会调用诸如drawRect : concurrently from different threads? 这样的显示方法,这不是很危险吗?

cocoa - 当 NSWindow 的标题栏在全屏模式下可见时如何收到通知?

ios - 将自定义 UIView 裁剪为三角形

iphone - iOS - 我很困惑这里是如何处理内存的?

iphone - paymentWithProductIdentifier 的替代解决方案是什么?