NSMenuItemのサブクラス(NSStatusMenuにあります)にカスタムビューを追加しました。これは、デフォルトでは、青/灰色の背景で「ハイライト」されないことを意味します。
次のコードを使用してこれを実装しました。
- (void)drawRect:(NSRect)rect {
BOOL isHighlighted = [menuItem isHighlighted];
if (isHighlighted) {
[[NSColor selectedMenuItemColor] set];
[NSBezierPath fillRect:rect];
[menuItem addHover];
} else {
[super drawRect:rect];
[menuItem removeHover];
}
}
- (void)mouseUp:(NSEvent*)event {
NSMenuItem *item = [self enclosingMenuItem];
NSMenu *menu = [item menu];
[menu cancelTracking];
[menu performActionForItemAtIndex:[menu indexOfItem:item]];
}
メニュー項目はうまく強調表示され、各項目をクリックすることもできます。ただし、それらをクリックすると、メニューを再度開いたときにisHighlighted状態が維持されているように見えます。
クリックすると、次にメニューを開いたときに強調表示された状態が削除されるように変更する方法はありますか?