我已经通过以下代码向我的systemStatusBar添加了一个菜单:
statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength] retain];
然后设置其属性。它与其他状态项(Volume,DateTime,Wi-Fi,BatteryIndicator,...)的唯一不同之处在于,如果我选择它并按下键盘上的左或右方向按钮,我就无法导航到其他项目,就像明智一样如果我选择另一个状态项并按方向键,它将不会选择我的状态项,而是跳转到另一个statusItem。我想知道有没有办法解决这个问题或者它是非OS statusItems的标准吗?
答案 0 :(得分:1)
您看到的菜单栏不是统一的对象。左侧部分的应用程序菜单项属于当前应用程序。所有这些MenuItem都是普通NSMenu
对象的子代。
最右边的状态栏项目属于系统(Spotlight,Clock,TimeMachine等),并且还共享一个共同的父NSMenu
或只是拥有一些特殊权限。
每个自定义状态栏菜单项都属于其对应的应用程序,并且具有自己的独立NSMenu
父对象。
如您所知,每个状态菜单都插入到属于NSStatusItem
对象的NSStatusBar
中。两者都直接从NSObject
继承而且(与NSMenu
不同)缺少接口来确定状态菜单的父母或兄弟姐妹。每个状态栏项目绝对隔离。
因此,您可以使用NSMenu
内的箭头键轻松导航,其中每个项目都知道其子项和父项。但是,无法从状态栏菜单导航到任何其他菜单。