确定是否绘制NSView的正确方法

时间:2011-03-23 15:02:24

标签: objective-c cocoa

是否有正确的方法来确定在当前视图层次结构中是否实际绘制了NSView,考虑如下情况:

  • 视图完全在屏幕外(非强制性)
  • 视图不在视图层次结构之上

遗憾的是,例如-isHidden-isHiddenOrHasHiddenAncestor未设置视图会因标签视图切换到另一个标签而消失。

这样做的原因是我有一个附加的子窗口,我希望能够在没有绘制附加到它的视图时隐藏它。

2 个答案:

答案 0 :(得分:3)

我找到了一个告诉它是否可见的技巧,但它需要子类化。它通过在2个事件上切换ivar来工作。

- (void)discardCursorRects {
  isDrawn_ = NO;
  [super discardCursorRects];
}

- (void)resetCursorRects {
  isDrawn_ = YES;
  [super resetCursorRects];
}

答案 1 :(得分:0)

它是否(或何时)被绘制的应该是“没有你的业务”,并且与它是否在屏幕上无关。使用NSView的-viewDidMoveToSuperview或-viewDidMoveToWindow来管理它。