0

我有 2 个NSWindows(都没有标题栏)在单击状态栏项目后显示在它的正下方。在第一个里面NSWindow我有一个按钮来开始翻转动画到第二个NSWindow,反之亦然。
这是我用来制作翻转动画的代码:

我也有这个windowDidResignKey:方法,所以当其中一个NSWindow失去焦点时,我关闭该方法内的两个窗口。

所以问题来了:

  • 我点击状态栏项目并NSWindow显示第一个
  • 我单击按钮执行翻转动画(翻转动画显示没有任何问题)到第二个窗口
  • 我从当前空间切换到另一个空间(这会触发windowDidResignKey:方法)
  • 我再次单击状态栏项目并NSWindow显示第二个
  • 我单击第二个窗口的按钮以执行到第一个窗口的翻转动画,但动画未正确显示。第二个窗口消失,一两秒钟什么都没有出现,然后第一个窗口出现(执行动画,只是不可见)
  • 但是,如果我去第一个空间(我第一次执行第一个翻转动画的地方),动画就会正确执行,没有任何错误。

我认为此错误是由以下原因引起的:一个窗口在一个空间中,另一个窗口在另一个空间中(由于windowDidResignKey:方法)。
有想法该怎么解决这个吗?我已经尝试更改NSWindows为“可以加入所有空间”和“移动到活动空间”,但没有任何成功。

谢谢!

4

1 回答 1

1

解决了问题,并更新了库。

容器窗口,负责翻转,需要在空间之间移动,自动移动到活动空间。我只是添加了

[flippingContainerWindow setMovable: YES];
[flippingContainerWindow setMovableByWindowBackground: YES];
[flippingContainerWindow setCollectionBehavior: NSWindowCollectionBehaviorMoveToActiveSpace];

+ (NSWindow *)flippingContainerWindow

于 2013-01-08T14:28:10.763 回答