Ben*_*der 8 cocoa nsmenu nsapplication
在尝试学习菜单处理的基础知识时.我的测试应用程序的菜单栏有3个菜单 - 即"TestApp","文件"和"帮助".我发现我可以完全删除这些菜单,只需调用say:
NSMenu* rootMenu = [NSApp mainMenu];
[rootMenu removeItemAtIndex:2];
Run Code Online (Sandbox Code Playgroud)
但是,我只想暂时禁用它们(灰掉它们).请问有同样简单的方法吗?
我可能会误解你的问题,但似乎你希望能够使用系统菜单栏显示的菜单的实际标题变灰(例如灰显"文件"菜单).我不确定它是否可能,但它肯定违反了Apple人机界面指南:
即使所有菜单的命令同时不可用(变暗),菜单的标题也会显示为不显示.用户应始终能够查看菜单的内容,无论它们当前是否可用.
因此,问题的真正解决方案是当应用程序处于某种状态时能够使某个菜单中的所有菜单项变灰.为此,请实现NSUserInterfaceValidations协议.它只需要实现该- (BOOL)validateUserInterfaceItem:方法.通常,在实现此方法时,您只需检查正在验证的用户界面项的选择器,如果应该启用则返回YES,否则返回NO(如果不应该这样)(这将使菜单项变灰).
| 归档时间: |
|
| 查看次数: |
5266 次 |
| 最近记录: |