【问题标题】:How to detect if NSStatusItem is displayed in status bar?如何检测 NSStatusItem 是否显示在状态栏中?
【发布时间】:2011-07-29 03:26:33
【问题描述】:

我的 Mac OS X 应用程序有一个 NSStatusItem。

它工作得很好,但是,我刚刚发现,如果顶部菜单/状态栏中的项目太多(例如,如果应用程序的菜单很长,图标太多等),我的状态项目被系统隐藏。

如何在我的应用程序中检测到这一点,以便我可以采取一些措施?

谢谢

【问题讨论】:

  • 可能让它更小,以便显示出来..
  • 我不知道它是否适合您的应用程序的 UI,但您是否考虑过使用首选项窗格?它不如额外的菜单栏方便,但用户始终可以访问系统偏好设置(通过 Dock 或通过 Apple 菜单)。
  • @trudyscousin :嗯,它是一个类似监视器的应用程序,所以它应该一直显示;因此将其隐藏在首选项中是不可能的。不过还是感谢您的帮助!

标签: objective-c cocoa macos nsstatusitem


【解决方案1】:

在 2011 年 7 月 26 日版的 Mac OS X 人机界面指南的第 18 页(其中状态项被称为“菜单栏附加功能”),声明:

注意:如果没有足够的空间来显示所有活动应用的 菜单,Mac OS X 可以省略一些额外的菜单栏。如果还有 显示所有菜单的空间不足,某些应用程序的菜单可能 省略,从最右边的菜单开始。

所以要回答您的问题,“(我可以)做些什么吗?”,答案是:不。您必须将菜单栏额外视为它被调用的“额外”,额外的便利。如果你真的想使用这个 UI 元素,你可以通过提供一个不包含对用户控制你的应用程序至关重要的命令来实现。相反,您应该提供可以从应用程序的其他地方访问的那些。

【讨论】:

  • 嗯,看来还真没办法知道。问题是,我正在编写一个无窗口、无停靠图标的应用程序,它只位于菜单栏中(类似于 Dropbox)。也就是说,菜单栏是唯一的界面。
【解决方案2】:

这个问题几乎与this 重复。链接中描述了一个非常不诚实的解决方案来解决您的问题,尽管它需要比您预期的更多的工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2011-03-26
    • 2015-12-18
    相关资源
    最近更新 更多