NSMenuItem的视图(NSView子类的实例)在悬停时不突出显示

Ale*_*ers 3 cocoa objective-c highlight nsview nsmenuitem

我需要使用自定义NSView子类来绘制一些内容,但是当用户悬停时它不会突出显示,并且NSMenu当用户点击它时它不会消除.有任何想法吗?

编辑

所以使用-drawRect:并且[[self enclosingMenuItem] isHighlighted]我能够判断是否需要将视图绘制为突出显示并且我有机会这样做.我必须弄清楚的是如何做到这一点.

pap*_*apr 5

也许你应该这样试试:

#define menuItem ([self enclosingMenuItem])

- (void) drawRect: (NSRect) rect {
    BOOL isHighlighted = [menuItem isHighlighted];
    if (isHighlighted) {
        [[NSColor selectedMenuItemColor] set];
        [NSBezierPath fillRect:rect];
    } else {
        [super drawRect: rect];
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 我试过了,但[menuItem isHighlighted]一直返回NO(即使鼠标在项目上方).我假设事件没有传播到menuItem.我错过了什么? (2认同)