56

我试图让我NSWindow

  1. 在所有空间上可见
  2. 显示桌面时可见(按F11
  3. 在任务控制/曝光中不可见

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

[self setCollectionBehavior: NSWindowCollectionBehaviorCanJoinAllSpaces
                            | NSWindowCollectionBehaviorStationary ];

在 Mac OS X Lion 上切换到仪表板时,该窗口与仪表板项目保持单独可见一秒钟,然后将其隐藏。

这是预期的行为还是错误?我的应用程序的用户在消失之前看到仪表板上的窗口会让人感到困惑。我原以为它们只会显示在 Spaces 而不是 Dashboard 上。

4

2 回答 2

3

我查看了http://cocoadev.com/wiki/DontExposeMe寻找解决方法

没有什么真正起作用的除了。

self.window.level = kCGDesktopWindowLevel;

现在也许 DETECT 更改为公开并设置它然后:) ...

请参阅如何检测任务控制或命令选项卡切换器在 OS X 中取代一个人的程序?为此:) 也许答案会出现

于 2012-11-13T19:38:37.657 回答
2

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

为了更好地解释这一点,创建一个新项目,将这两行添加到 中applicationDidFinishLaunching:,然后运行它。

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

(self.window是新建项目时自动创建的窗口。反正这里没关系,只要是出现在屏幕上的窗口即可)

现在注意这种行为:当从一个可以看到您的窗口的空间更改为另一个有来自其他应用程序的其他窗口的空间时(因此您的窗口应该消失,因为您的应用程序将被停用),您的窗口仅在动画结束。那么,发生了什么?

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

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

于 2012-11-01T16:42:44.863 回答