我有一个NSView,我使用draw rect方法绘制背景图片,它还有3个子视图NSButtons。问题是,当鼠标按下按钮时,其他按钮会消失。但是当我删除draw rect方法时,这种情况就不会发生。所以我猜想这与绘制图像的draw rect方法有关。
如何避免这种情况? 谢谢。
编辑: 好的,我找到了问题所在。基本上,我有一个NSMenuItem,并且我正在其中放置一个带有3个按钮的视图。但是在NSMenu中,在顶部有4个像素的填充。因此,为了去除该填充,我使用了此处提供的解决方案: Gap above NSMenuItem custom view 从解决方案中,有一行代码在drawRect方法中:
如何避免这种情况? 谢谢。
编辑: 好的,我找到了问题所在。基本上,我有一个NSMenuItem,并且我正在其中放置一个带有3个按钮的视图。但是在NSMenu中,在顶部有4个像素的填充。因此,为了去除该填充,我使用了此处提供的解决方案: Gap above NSMenuItem custom view 从解决方案中,有一行代码在drawRect方法中:
[[NSBezierPath bezierPathWithRect:fullBounds] setClip];
一旦我删除了这行代码,按钮的行为就正常了。但是,顶部的填充不会消失。
以下是我的drawRect:
- (void) drawRect:(NSRect)dirtyRect {
[[NSGraphicsContext currentContext] saveGraphicsState];
NSRect fullBounds = [self bounds];
fullBounds.size.height += 4;
[[NSBezierPath bezierPathWithRect:fullBounds] setClip];
NSImage *background = [NSImage imageNamed:@"bg.png"];
[background drawInRect:fullBounds fromRect:NSZeroRect operation:NSCompositeCopy fraction:100.0];
[[NSGraphicsContext currentContext] restoreGraphicsState];
}
drawRect:
吗? - jscs