セットをメニューにNSStatusBar
したシンプルなものを作りました。NSMenu
また、このメニューにいくつか追加しましたNSMenuItems
。これは正常に機能します(セレクターと強調表示を含む)が、カスタムビュー(setView :)を追加するとすぐに、強調表示は発生しません。
CustomMenuItem *menuItem = [[CustomMenuItem alloc] initWithTitle:@"" action:@selector(openPreferences:) keyEquivalent:@""];
[menuItem foo];
[menuItem setTarget:self];
[statusMenu insertItem:menuItem atIndex:0];
[menuItem release];
そして私のfooメソッドは次のとおりです。
- (void)foo {
NSView *view = [[NSView alloc] initWithFrame:CGRectMake(5, 10, 100, 20)];
[self setView:view];
}
setViewメソッドを削除すると、強調表示されます。
検索して検索しましたが、これを実装/有効化する方法が見つかりません。
編集
NSViewサブクラスのこの質問のコードに従ってハイライトを実装しました。
NSMenuItemのビュー(NSViewサブクラスのインスタンス)がホバー時に強調表示されない
#define menuItem ([self enclosingMenuItem])
- (void) drawRect: (NSRect) rect {
BOOL isHighlighted = [menuItem isHighlighted];
if (isHighlighted) {
[[NSColor selectedMenuItemColor] set];
[NSBezierPath fillRect:rect];
} else {
[super drawRect: rect];
}
}