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

标签 objective-c macos nswindow

在我的程序中,我有一个窗口,用户将其放置在屏幕上他想要拍照的部分上。

然后,当他单击按钮拍照时,我的程序 orderOut 是窗口,截取屏幕截图,然后再次显示该窗口,现在其中包含屏幕截图。

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

我已经能够通过在调用 orderOut 后调用 sleep(1) 来回避这个问题,但肯定有更好的方法吗?

最佳答案

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

[myWindow setAnimationBehavior:NSWindowAnimationBehaviorNone]

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

关于objective-c - NSWindow orderOut——有没有办法等待窗口关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12230163/

相关文章:

ios - 动态更改程序/VFL 约束

objective-c - 像从 cmd+tab 一样获取 ProcessList

objective-c - NSWindow 自动保存 - 位置未保存在第二台显示器上

Iphone Interface Builder - 工具栏图像始终显示为白色框

ios - os_log timeval格式的Clang错误

objective-c - 如何获取计算机当前的音量级别?

cocoa - StatusBar 项目的弹出窗口

macos - 如何将 NSWindow 移动到特定屏幕?

objective-c - UITapGestureRecognizer 超时?

python - Brew install python 不再指向 python