隐藏NSView中的子控件

时间:2011-02-22 00:34:00

标签: cocoa xcode nsview nswindow nsimage

我有一个带有多个子控件的NSView。我知道我可以调用[childControl setHidden:TRUE],但我想知道是否可以阻止子控件的“drawRect:”消息。

我注意到在NSView上不调用[super drawRect:NSZeroRect]不会影响子控件。所以我的问题是谁调用了child控件的drawRect消息?如果有办法阻止它。

谢谢,何塞。

1 个答案:

答案 0 :(得分:0)

每次控件都应该进行光学反应,他们会再次绘制视图。 如果你真的想解决这个问题,你可以为每个控件创建一个子类并添加如下代码:

-(void)drawRect:(NSRect)rect {
if (!self.blocked) {
[super drawRect:rect];
}
}

属性“已阻止”是一个布尔值,如果要阻止它,则必须将其设置为YES或NO。 注意:要完全隐藏它,控制子类必须在第一次自我绘制之前被阻塞。