【问题标题】:Disabling/enabling an application menu item禁用/启用应用程序菜单项
【发布时间】:2010-01-18 06:09:05
【问题描述】:

尝试学习菜单处理的基础知识。我的测试应用程序的菜单栏有 3 个菜单——即“TestApp”、“File”和“Help”。我发现我可以完全删除这些菜单,只需调用 say:

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

但是,我只想暂时禁用它们(将它们变灰)。请问有没有同样简单的方法呢?

【问题讨论】:

    标签: cocoa nsmenu nsapplication


    【解决方案1】:

    我可能误解了您的问题,但您似乎希望能够使系统菜单栏出现的菜单的实际标题变灰(例如使“文件”菜单变灰)。我不确定这是否可能,但它肯定违背了Apple Human Interface Guidelines

    菜单标题显示为不暗淡 即使菜单的所有命令都是 同时不可用(变暗)。 用户应该始终能够查看 菜单的内容,无论它们是否 目前可用。

    因此,问题的真正解决方案是当您的应用程序处于某种状态时,能够使某个菜单中的所有菜单项变灰。为此,implement the NSUserInterfaceValidations protocol。它只需要实现- (BOOL)validateUserInterfaceItem: 方法。通常,在实现此方法时,您只需检查正在验证的用户界面项的选择器,如果应启用则返回 YES,否则返回 NO(这将使菜单项变灰)。

    【讨论】:

    • 是的,您理解正确,CJ。我正在试图使“文件”和/或“编辑”菜单本身变暗 - 而不是它们各自的项目 - 并且不知道 Apple 的人机界面指南中指出我的关键段落不应该那样做。我在我的代码中包含了 - (BOOL)validateUserInterfaceItem: 方法,它运行良好。这么简单的解决方案。谢谢一百万:-)
    猜你喜欢
    • 2017-05-15
    • 1970-01-01
    • 2020-05-05
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多