如何检查NSWindow是否可见

时间:2011-08-16 16:59:11

标签: objective-c cocoa macos nswindow

有没有办法检查NSWindow是否可见?一旦我的应用程序的第一个窗口变为可见,我想显示一个工作表控制器(10.7上的动画结束,用户可以看到窗口!)。如果我只是在windowDidLoad中显示工作表,则会产生一个看起来很愚蠢的动画(工作表翻出,窗口从后面弹出)。我知道NSWindowDelegate提供了两个方法,当窗口成为关键窗口或主窗口时调用这些方法,但是,这并不意味着窗口当时已经完全可见。这在Lion上更加引人注目,其中Windows倾向于弹出这个愚蠢的动画。

2 个答案:

答案 0 :(得分:27)

我会选择这样的事情:

if ([myWindow isVisible]) {
    // Do stuff
}

或者在发生更改时通知此关键路径的观察者。

答案 1 :(得分:1)

对于它的价值,你也可以绑定到window.visible属性。 Xcode 4可能会对你发出嘎嘎声,说这不是一个可绑定的属性,但它会起作用。

如果您根据窗口是否可见以及其他方法尝试启用/禁用显示/隐藏NSStatusItem,这将非常有用。

即。在Interface Builder中:

  • 绑定到:App Delegate
  • 模型关键路径:self.window.visible