如何检查一个NSWindow是否可见

11

有没有办法检查一个 NSWindow 是否可见?我想在我的应用程序的第一个窗口可见后显示一个 sheet 控制器(10.7 上的动画已经结束,用户可以看到窗口!)。如果我只是在 windowDidLoad 中显示 sheet,那么将会导致一种愚蠢的外观动画(sheet 滚出,窗口从后面弹出)。我知道 NSWindowDelegate 提供了两种方法,它们在窗口成为键窗口或主窗口时被调用,但这并不意味着窗口在此时已经完全可见。在 Lion 上尤其明显,窗口往往以这种愚蠢的动画弹出。


我记得我曾经读到过关于窗口在屏幕上完成动画时的一些通知,但现在我找不到了... - jtbandes
2个回答

30

我会选择类似这样的东西:

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

或者为这个键路径添加一个观察者,以便在发生更改时通知。


我想是时候稍微休息一下了,我花了大约30分钟搜索NSWindow文档以寻找这样的函数,并且百分之百确定这样的函数不存在。非常感谢! - JustSid
3
我知道你的感受,一直钻研问题很少有帮助。休息一下,第二天再来看通常会有新的发现 :). - PeyloW

2

说句实话,你也可以绑定到window.visible属性上。 Xcode 4可能会警告您,说它不是可绑定属性,但它仍然有效。

如果您试图基于窗口是否可见来启用/禁用显示/隐藏NSStatusItem,则此功能可能会很有用,以及其他方法。

例如,在Interface Builder中:

  • 绑定至:应用程序代理
  • 模型关键路径:self.window.visible

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接