更改Spaces后,NSWindow翻转动画未显示

时间:2013-01-05 21:35:13

标签: objective-c macos cocoa animation nswindow

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

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

所以这就是问题所在:

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

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

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

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

+ (NSWindow *)flippingContainerWindow