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

时间:2010-05-27 00:14:43

标签: objective-c cocoa highlight nsview nsmenuitem

我需要使用自定义NSView子类来绘制一些内容,但是当用户将鼠标悬停时它不会突出显示,并且当用户点击它时它不会忽略NSMenu 。有什么想法吗?

修改

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

3 个答案:

答案 0 :(得分: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];
    }
}

答案 1 :(得分:1)

我不确定我是否理解你的问题。我认为你的意思如下:菜单打开,所有图纸都停止绘图。我想这是因为打开的NSMenu阻止了UI'NSRunLoop它的线程。其中之一。你应该尝试在另一个线程中使用线程安全的线程。

答案 2 :(得分:0)

这对我有用。我使用堆栈视图。但这也适用于视图。

library(stringr)

mapply(function(x, y) paste(c(x, y), collapse = ' | '), 
    str_extract_all(have, '(\\w+ ncd)'), str_extract_all(have, '(ncd \\w+)'))

#[1] "the ncd | ncd mse"                          
#[2] "new ncd | new ncd | ncd staffs | ncd should"
#[3] "current ncd | ncd post"