I need to use a custom NSView
subclass to draw some content, but it isn't drawing as highlighted when the user hovers and it doesn't dismiss the NSMenu
when the user clicks on it. Any ideas?
Edit
So using -drawRect:
and [[self enclosingMenuItem] isHighlighted]
I'm able to tell whether or not I need to draw the view as highlighted and am given the chance to do so. All I have to figure out is how to do that.
Maybe you should try it this way:
#define menuItem ([self enclosingMenuItem])
- (void) drawRect: (NSRect) rect {
BOOL isHighlighted = [menuItem isHighlighted];
if (isHighlighted) {
[[NSColor selectedMenuItemColor] set];
[NSBezierPath fillRect:rect];
} else {
[super drawRect: rect];
}
}
I'm not sure if I understood your question. I think you mean the following: The Menu opened and all your drawings stopped drawing. I think this is because the opened NSMenu stopps the UI' NSRunLoop its thread. One of both. You should try to do your drawing thread-safe in an other thread.
来源:https://stackoverflow.com/questions/2917713/an-nsmenuitems-view-instance-of-an-nsview-subclass-isnt-highlighting-on-hove