在嘗試學習菜單處理的基礎知識時。我的測試應用程序的菜單欄有3個菜單 - 即“TestApp”,“文件”和“幫助”。我發現我可以完全刪除這些菜單,只需調用say:
NSMenu* rootMenu = [NSApp mainMenu];
[rootMenu removeItemAtIndex:2];
但是,我只想暫時禁用它們(灰色它們)。請問有同樣簡單的方法嗎?
在嘗試學習菜單處理的基礎知識時。我的測試應用程序的菜單欄有3個菜單 - 即“TestApp”,“文件”和“幫助”。我發現我可以完全刪除這些菜單,只需調用say:
NSMenu* rootMenu = [NSApp mainMenu];
[rootMenu removeItemAtIndex:2];
但是,我只想暫時禁用它們(灰色它們)。請問有同樣簡單的方法嗎?
我可能會誤解你的問題,但似乎你希望能夠使用系統菜單欄顯示的菜單的實際標題變灰(例如灰顯“文件”菜單)。我不確定它是否可能,但它確實違背了 Apple人機界面指南:
菜單的標題顯示為未顯示 即使所有菜單的命令都是 同時不可用(變暗)。 用戶應該始終能夠查看 菜單的內容,無論是否 目前可用。
因此,問題的真正解決方案是當應用程序處於某種狀態時,能夠使某個菜單中的所有菜單項變灰。為此,請實施NSUserInterfaceValidations協議。它只需要實現 -
(BOOL)validateUserInterfaceItem:
方法。通常,在實現此方法時,只需檢查要驗證的用戶界面項的選擇器,如果應該啟用則返回YES,否則返回NO(如果不應該這樣)(這會使菜單項變灰)。