我已经通过以下代码向我的 systemStatusBar 添加了一个菜单:
statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength] retain];
然后设置它的属性。它与其他状态项(音量、日期时间、Wi-Fi、BatteryIndicator 等)的唯一不同是,如果我选择它并按键盘上的向左或向右方向按钮,我将无法导航到其他项目,同样明智如果我选择另一个状态项并按方向键,它不会选择我的状态项,而是跳转到另一个状态项。我想知道有没有办法解决这个问题,或者它是非操作系统状态项的标准吗?
最佳答案
您看到的菜单栏不是一个统一的对象。左侧的应用程序菜单项属于当前应用程序。所有这些 MenuItem 都是通用 NSMenu
对象的子对象。
最右侧的状态栏项目属于系统(Spotlight、Clock、TimeMachine 等),它们也共享一个公共(public)父级 NSMenu
或仅具有一些特殊权限。
每个自定义状态栏菜单项都属于其相应的应用程序,并有自己独立的 NSMenu
父对象。
如您所知,每个状态菜单都插入到属于 NSStatusBar
对象的 NSStatusItem
中。两者都直接继承自 NSObject
并且(与 NSMenu
不同)缺少用于确定状态菜单的父级或兄弟级的接口(interface)。每个状态栏项目都绝对隔离。
因此,您可以在 NSMenu
中使用箭头键轻松导航,其中每个项目都知道其子项和父项。但是,无法从状态栏菜单导航到任何其他菜单。
关于objective-c - Mac系统状态栏焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12669557/