NSWindow与NSWindowCollectionBehaviorStation显示在仪表板上。 这是一个错误?

我试图让我的NSWindow

  1. 在所有空间中都可见
  2. 显示桌面时可见(按F11
  3. 在Mission Control / Expose中不可见

下面是这样做的,但有一个副作用:

 [self setCollectionBehavior: NSWindowCollectionBehaviorCanJoinAllSpaces | NSWindowCollectionBehaviorStationary ]; 

在Mac OS X Lion上切换到仪表板时,该窗口在仪表板项目中一秒钟仍然可见,然后隐藏。

这是预期的行为还是错误? 我的应用程序的用户发现它很容易看到仪表板上的窗口,然后消失。 我希望他们只能显示空间,而不是仪表板。

我查看了http://cocoadev.com/wiki/DontExposeMesearch解决方法;

没有什么工作,除了。

 self.window.level = kCGDesktopWindowLevel; 

现在可能检测更改揭露,然后设置:)

请参阅如何检测任务控制或Command-Tab切换器取代OS X中的程序? 为此:) 也许一个答案会出现在那里

我能够重现这种行为,我认为这只是苹果方面的一些错误的animation。

就这样我可以更好地解释这一点,创build一个新的项目,将这两行添加到applicationDidFinishLaunching:并运行它。

 [self.window setCollectionBehavior: NSWindowCollectionBehaviorCanJoinAllSpaces | NSWindowCollectionBehaviorStationary ]; [self.window setHidesOnDeactivate: YES]; 

(self.window是创build一个新项目时自动创build的窗口,无论如何,只要它是一个窗口出现在屏幕上)

现在注意这个行为:当从一个可以看到你的窗口的空间改变到另一个窗口来自其他应用程序的其他窗口(并且因为你的应用程序将被停用,你的窗口应该消失),那么你的窗口只会消失animation结束。 那么,发生了什么?

这是我认为发生的事情:当从一个空间切换到另一个空间时,在所有空间上显示的窗口只对animation之后的改变做出反应 ,因此窗口在仪表板上短暂出现。 我想你会注意到它在幻灯片animation结束时就消失了。

所以,不幸的是,我不知道如何解决你的问题。 这似乎是这样发生的。