Cocoa 带有NSWindowCollectionBehaviorStational的NSWindow在仪表板上可见。这是虫子吗?

Cocoa 带有NSWindowCollectionBehaviorStational的NSWindow在仪表板上可见。这是虫子吗?,cocoa,nswindow,spaces,apple-expose,Cocoa,Nswindow,Spaces,Apple Expose,我正在尝试将我的NSWindow设置为: 在所有空间中都可见 显示桌面时可见(按F11) 在任务控制/暴露中不可见 以下内容正是这样做的,但有一个副作用: [self setCollectionBehavior: NSWindowCollectionBehaviorCanJoinAllSpaces | NSWindowCollectionBehaviorStationary ]; 在Mac OS X Lion上切换到仪表板时,该窗口与仪表

我正在尝试将我的
NSWindow
设置为:

  • 在所有空间中都可见
  • 显示桌面时可见(按
    F11
  • 在任务控制/暴露中不可见
  • 以下内容正是这样做的,但有一个副作用:

    [self setCollectionBehavior: NSWindowCollectionBehaviorCanJoinAllSpaces
                                | NSWindowCollectionBehaviorStationary ];
    
    在Mac OS X Lion上切换到仪表板时,该窗口与仪表板项目保持可见一秒钟,然后隐藏


    这是预期的行为还是错误?我的应用程序的用户发现,在仪表板上的窗口消失之前,他们会感到困惑。我本以为它们只会出现在空间上,而不会出现在仪表板上。

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

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

    [self.window setCollectionBehavior: NSWindowCollectionBehaviorCanJoinAllSpaces | NSWindowCollectionBehaviorStationary ];
    [self.window setHidesOnDeactivate: YES];
    
    (self.window是在创建新项目时自动创建的窗口。在这里,它实际上并不重要,只要它是屏幕上显示的窗口即可)

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

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

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

    我在寻找解决办法

    除此之外,什么都没用

    self.window.level = kCGDesktopWindowLevel;
    
    现在可能检测要公开的更改并设置:)

    请参见:)
    也许会有答案

    已经有一段时间了,你找到解决办法了吗?糟糕透了。如果有人带着答案顺道而来,我会投票赞成。。。干杯。一年后,这个问题有什么解决方案吗?所以答案是‘请提交一个bug’:)有时候,这就是你所能做的