按快捷键时禁用菜单突出显示

时间:2013-01-03 09:39:29

标签: objective-c nsmenu

我想禁用当您按下分配给属于相关特定菜单的NSMenuItem的快捷键时发生的应用程序“菜单突出显示”。

问题是在应用程序中你使用键盘相当多,并且菜单一直变得突出显示有点烦人但我仍然希望有菜单(包括快捷方式),因为它向用户显示可以使用的行动。

2 个答案:

答案 0 :(得分:0)

声明自定义NSMenuItem子类并开始使用该自定义类而不是NSMenuItem。

在这个课程中你应该覆盖这个方法:

- (BOOL)isHighlighted
{
    return NO;
}

这样您就不会突出显示菜单项。

编辑

试试这个:

[item setOnStateImage: item.offStateImage];

答案 1 :(得分:0)

FFR:在文档中查找以下方法:

- (BOOL)validateMenuItem:(NSMenuItem *)menuItem 

可以同时选择菜单项和相关的命令键。

在您的NSDocument中为validateMenuItem提供正文 比如,

- (BOOL)validateMenuItem:(NSMenuItem *)menuItem 
{
    SEL theAction = [menuItem action];
    if (theAction == @selector(openPreferencesPanel:)) {
        return !_isCurrentlyModal;                   //A BOOL in MyDocument
    }
    return [super validateMenuItem:menuItem];           // Keep this for proper cut, paste, etc validation
}

在您的情况下,上面的选择器可能是highlight:。检查nib / xib并检查它。它可能附在第一响应者身上。复制方法名称。

还可以使用更多常规项目(按钮等),还包括菜单项。

- (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)anItem