NSMenuItem中的自定义视图未正确突出显示

时间:2015-06-03 10:10:15

标签: objective-c cocoa nsview nsmenuitem

我尝试使用NSMenuitem的自定义视图,该视图有效。不幸的是,我在突出显示(鼠标悬停)方面遇到了一些困难。我已经按照其他线程中的说明在我的drawRect:子类中实现NSView来手动执行蓝色突出显示。这似乎有效,但突出显示颜色不正确。与常规菜单项相比,它看起来太暗了,有趣的是我的自定义视图的subviews使用正确的突出显示颜色(参见屏幕截图)。 关于如何解决这个问题的任何想法?

drawRect:子类中的当前NSView方法如下所示:

- (void)drawRect:(NSRect)dirtyRect
{
    [super drawRect:dirtyRect];

    BOOL isHighlighted = [[self enclosingMenuItem] isHighlighted];
    if (isHighlighted)
    {
        [[NSColor selectedMenuItemColor] setFill];
        NSRectFill(dirtyRect);

        [self.profileNameView setTextColor:[NSColor whiteColor]];
        [self.securedIPView setTextColor:[NSColor whiteColor]];
        [self.separatorView setTextColor:[NSColor whiteColor]];
        [self.connectionTimeView setTextColor:[NSColor whiteColor]];
    }
    else
    {
        [self.profileNameView setTextColor:[NSColor controlTextColor]];
        [self.securedIPView setTextColor:[NSColor disabledControlTextColor]];
        [self.separatorView setTextColor:[NSColor disabledControlTextColor]];
        [self.connectionTimeView setTextColor:[NSColor disabledControlTextColor]];
    }
}

结果突出显示如下:

enter image description here

0 个答案:

没有答案