NSWindow orderOut - 有没有办法等待窗口关闭?

时间:2012-09-01 18:11:51

标签: objective-c macos nswindow

在我的程序中,我有一个窗口,用户在屏幕上定位他要拍照的部分。

然后,当他点击按钮拍照时,我的程序orderOut是窗口,截取屏幕截图,再次显示窗口,现在有一个屏幕截图。

问题是,orderOut似乎没有立即关闭窗口。因此,当我拍摄截图时,它通常会截取窗口本身的截图(应该已经关闭),这显然不是我想要的。

我可以在致电sleep(1)后致电orderOut来解决问题,但肯定有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

根据文件here。调用orderOut时,窗口会执行动画。因此,您可以通过将动画行为设置为none来删除orderOut动画:

[myWindow setAnimationBehavior:NSWindowAnimationBehaviorNone]

或使用NSObject方法 performSelector:withObject:afterDelay:在一定时间后执行屏幕截图操作x。假设NSWindow orderOut动画使用默认持续时间,则延迟将为0.2f。否则,您可以进行一些测试以检查您的案例中的合适值。