我想禁用当您按下分配给属于相关特定菜单的 NSMenuItem 的快捷键时发生的应用程序“菜单突出显示”。
问题是,在应用程序中,您经常使用键盘,并且一直突出显示菜单变得有点烦人,但我仍然希望在那里有菜单(包括快捷方式),因为它向用户显示哪些操作可以使用。
我想禁用当您按下分配给属于相关特定菜单的 NSMenuItem 的快捷键时发生的应用程序“菜单突出显示”。
问题是,在应用程序中,您经常使用键盘,并且一直突出显示菜单变得有点烦人,但我仍然希望在那里有菜单(包括快捷方式),因为它向用户显示哪些操作可以使用。
声明一个自定义 NSMenuItem 子类并开始使用该自定义类而不是 NSMenuItem。
在此类中,您应该重写此方法:
- (BOOL)isHighlighted
{
return NO;
}
这样您就不会突出显示菜单项。
编辑
尝试这个:
[item setOnStateImage: item.offStateImage];
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:
. 检查笔尖/xib 并检查它。它可能附加到第一响应者。复制方法名称。
还可以查看更一般的项目(按钮等),还包括菜单项。
- (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)anItem