切换空间时保持窗口在顶部

Geo*_*rge 5 macos cocoa mission-control

我创建了一个窗口使用-[NSWindow setCollectionBehavior:NSWindowCollectionBehaviorCanJoinAllSpaces].
它只做我想要的一半,但是:当我切换空格时,窗口也会切换空格(如预期的那样),但我的窗口移动到该空间中所有其他窗口后面的后面.这特别糟糕,因为我的应用程序处于活动状态,但其窗口低于所有其他应用程序的窗口.我尝试将级别更改为NSFloatingWindowLevel,这确实保持在顶部,但是当切换空格时它会丢失键状态(焦点).

我尝试NSWindowCollectionBehaviorMoveToActiveSpace了收集行为,但它绝对不是我想要的.

有希望吗?我知道几乎没有其他与Spaces相关的API.

Fra*_*rew 6

空间是一种痛苦。我的解决方案是注册更改通知,如下所示:

[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self 
                             selector:@selector(activeSpaceDidChange:)
                                 name:NSWorkspaceActiveSpaceDidChangeNotification 
                               object:nil];
Run Code Online (Sandbox Code Playgroud)

然后在我的WindowController课堂上:

- (void) activeSpaceDidChange:(NSNotification *)aNotification {
    if ([NSApp isActive]) [[self window] orderFront:self];
}
Run Code Online (Sandbox Code Playgroud)