如何把NSWindow带到前面和现在的空间?

我正在使用这个代码来调出我的窗口:

[self.window makeKeyAndOrderFront:self]; [self.window setOrderedIndex:0]; 

但是经常会在其他窗口下面显示,或者显示在我最后打开的其他空间桌面中。如何使它始终显示在用户的“前面”?

更新我从以前问的问题find答案; 使窗口显示在其他窗口的顶部:[NSApp activateIgnoringOtherApps:YES];

但如何将应用程序移动到用户的当前空间?

要将您的应用程序放在前面:

 [NSApp activateIgnoringOtherApps:YES]; 

迅速:

 NSApp.activateIgnoringOtherApps(true) 

Swift 3:

 NSApp.activate(ignoringOtherApps: true) 

也许你想要:

  [self.window setCollectionBehavior: NSWindowCollectionBehaviorCanJoinAllSpaces]; 

尝试其他集合行为…我发现NSWindowCollectionBehaviorMoveToActiveSpace在10.5中有点bug,但现在可能会更好。

但如何将应用程序移动到用户的当前空间?

你没有。 空间保存窗口,而不是应用程序。 (这就是为什么collectionBehavior属性在NSWindow上,而不是NSApplication。)

Swift 2的语法看起来有些不同:

 NSApplication.sharedApplication().activateIgnoringOtherApps(true) 

Swift 3.0

NSApp.activate(忽略其他应用程序:true)

Swift 2.0

 NSApp.activateIgnoringOtherApps(true) 

有用的编程技巧和黑客