2012-10-01 61 views
3

我這個代碼添加一個菜單,我systemStatusBar:的Mac系統狀態欄焦點

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

然後設置其屬性。與其他狀態項目(音量,日期時間,Wi-Fi,BatteryIndi​​cator等)唯一不同的是,如果我選擇它並按鍵盤上的左或右方向按鈕,則無法導航到其他項目,如果我選擇另一個狀態項並按方向鍵,它將不會選擇我的狀態項,而是跳轉到另一個狀態項。我想知道有沒有辦法解決這個問題,或者它是非OS的statusItems標準?

+0

我的狀態欄上沒有第三方應用程序允許這樣做,所以我猜測箭頭鍵(以及其他功能,如命令拖動)只允許Apple默認狀態欄應用程序。 – TheAmateurProgrammer

回答

1

您看到的菜單欄不是一個統一的對象。左側部分的應用程序菜單項屬於當前應用程序。所有這些MenuItem都是一個共同的NSMenu對象的子對象。

最右側的狀態欄項目屬於系統(Spotlight,Clock,TimeMachine等),也可以共享一個共同父項NSMenu或者只是具有一些特殊權限。

每個自定義狀態欄菜單項都屬於其相應的應用程序,並具有其自己的獨立子對象NSMenu。 如您所知,每個狀態菜單都插入屬於NSStatusBar對象的NSStatusItem中。兩者都直接從NSObject繼承,並且(不像NSMenu)缺少界面來確定狀態菜單的父母或兄弟姐妹。它完全隔離每個狀態欄項目。

因此,您可以輕鬆導航NSMenu內的箭頭鍵,其中每個項目都知道其子女和父母。但是,無法從狀態欄菜單導航到任何其他菜單。