一千萬個為什麽

搜索

禁用/啟用應用程序菜單項

在嘗試學習菜單處理的基礎知識時。我的測試應用程序的菜單欄有3個菜單 - 即“TestApp”,“文件”和“幫助”。我發現我可以完全刪除這些菜單,只需調用say:

NSMenu* rootMenu = [NSApp mainMenu];
[rootMenu removeItemAtIndex:2];

但是,我只想暫時禁用它們(灰色它們)。請問有同樣簡單的方法嗎?

最佳答案

我可能會誤解你的問題,但似乎你希望能夠使用系統菜單欄顯示的菜單的實際標題變灰(例如灰顯“文件”菜單)。我不確定它是否可能,但它確實違背了 Apple人機界面指南

菜單的標題顯示為未顯示   即使所有菜單的命令都是   同時不可用(變暗)。   用戶應該始終能夠查看   菜單的內容,無論是否   目前可用。

因此,問題的真正解決方案是當應用程序處於某種狀態時,能夠使某個菜單中的所有菜單項變灰。為此,請實施NSUserInterfaceValidations協議。它只需要實現 - (BOOL)validateUserInterfaceItem:方法。通常,在實現此方法時,只需檢查要驗證的用戶界面項的選擇器,如果應該啟用則返回YES,否則返回NO(如果不應該這樣)(這會使菜單項變灰)。

轉載註明原文: 禁用/啟用應用程序菜單項