問題の特定のメニューに属する NSMenuItem に割り当てられたショートカット キーを押したときに発生する、アプリケーションの「メニュー ハイライト」を無効にしたいと考えています。
問題は、アプリケーションでキーボードをかなり使用し、メニューが常に強調表示されるのが少し面倒ですが、ユーザーにどのアクションを実行できるかを示すため、メニュー (ショートカットを含む) をそこに表示したいことです。利用される。
問題の特定のメニューに属する NSMenuItem に割り当てられたショートカット キーを押したときに発生する、アプリケーションの「メニュー ハイライト」を無効にしたいと考えています。
問題は、アプリケーションでキーボードをかなり使用し、メニューが常に強調表示されるのが少し面倒ですが、ユーザーにどのアクションを実行できるかを示すため、メニュー (ショートカットを含む) をそこに表示したいことです。利用される。
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
カスタム NSMenuItem サブクラスを宣言し、NSMenuItem の代わりにそのカスタム クラスの使用を開始します。
このクラスでは、このメソッドをオーバーライドする必要があります。
- (BOOL)isHighlighted
{
return NO;
}
この方法では、メニュー項目が強調表示されません。
編集
これを試して:
[item setOnStateImage: item.offStateImage];