2011-08-16 60 views
8

有没有办法检查NSWindow是否可见?我希望在应用程序的第一个窗口变得可见之后显示一个图表控制器(10.7上的动画结束,用户可以看到窗口!)。如果我只是在windowDidLoad中显示表单,则会导致看起来很愚蠢的动画(表单展开,窗口从后面弹出)。我知道NSWindowDelegate提供了两种方法,当一个窗口成为关键窗口或主窗口时调用,但这并不意味着该窗口在当时已经完全可见。这对于Lion来说更加引人注目,因为这些愚蠢的动画往往会弹出窗口。如何检查NSWindow是否可见

+0

我以为我已经读到了一些通知时,窗口完成动画在屏幕上,但现在我找不到它... – jtbandes

回答

24

我会去这样的事情:

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

或者当发生变化时通知此关键路径的观察者。

+0

我想我的睡眠时间有点多,我搜索了NSWindow的文档,花了30分钟寻找这样一个功能,并且100%确定像这样的东西没有不存在。非常感谢! – JustSid

+3

@JustSid - 我知道这种感觉,对问题的研究很少帮助。第二天休息和新鲜的样子经常做:)。 – PeyloW

1

对于它的价值,你也可以绑定到window.visible属性。 Xcode 4可能会对您发出警告,称它不是可绑定的属性,但它会起作用。

,如果你想启用/禁用显示这可能是有用/根据窗口是否可见,以及其他方法掩饰NSStatusItem。

即在Interface Builder:

  • 绑定到:应用程序委托
  • 型号主要路径:self.window.visible