3

我通过以下代码向我的 systemStatusBar 添加了一个菜单:

statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength] retain];

然后设置它的属性。它与其他状态项(音量、日期时间、Wi-Fi、BatteryIndi​​cator 等)的唯一不同是,如果我选择它并按下键盘上的左或右方向按钮,我将无法导航到其他项目,同样明智如果我选择另一个状态项并按方向键,它将不会选择我的状态项,而是跳转到另一个状态项。我想知道有没有办法解决这个问题,还是非操作系统状态项的标准?

4

1 回答 1

1

你看到的菜单栏不是一个统一的对象。左侧的应用程序菜单项属于当前应用程序。所有这些 MenuItem 都是公共NSMenu对象的子项。

最右侧的状态栏项目属于系统(Spotlight、Clock、TimeMachine 等),或者也共享一个共同的父项NSMenu,或者只是具有一些特殊权限。

每个自定义状态栏菜单项都属于其相应的应用程序,并有自己的独立NSMenu父对象。如您所知,每个状态菜单都插入到NSStatusItem属于NSStatusBar对象的 a 中。两者都直接继承自NSObject并且(与 不同NSMenu)缺少接口来确定状态菜单的父级或兄弟级。每个状态栏项目都被它绝对隔离。

因此,您可以使用 中的箭头键轻松导航NSMenu,其中每个项目都知道其子项和父项。但是,无法从您的状态栏菜单导航到任何其他菜单。

于 2012-10-18T08:23:52.747 回答