我创建了一个简单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];
}
}