如何将NSWindow带到现在的空间?

时间:2009-11-16 06:26:42

标签: cocoa

我正在使用此代码打开窗口:

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

但通常它会在其他窗口之下,或者在我最后打开它的其他Space桌面中显示。如何让它始终显示在用户的“前方”?

更新 我找到了之前提出的问题的答案;使窗口显示在其他窗口的顶部: [NSApp activateIgnoringOtherApps:YES];

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

7 个答案:

答案 0 :(得分:112)

将您的应用带到最前面:

[NSApp activateIgnoringOtherApps:YES];

夫特:

NSApp.activateIgnoringOtherApps(true)

斯威夫特3:

NSApp.activate(ignoringOtherApps: true)

答案 1 :(得分:25)

也许你想要:

  [self.window setCollectionBehavior: NSWindowCollectionBehaviorCanJoinAllSpaces];

尝试其他收集行为......我发现NSWindowCollectionBehaviorMoveToActiveSpace在10.5中有点儿错误,但现在可能会更好。

答案 2 :(得分:3)

  

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

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

答案 3 :(得分:3)

Swift 2的语法似乎有点不同:

NSApplication.sharedApplication().activateIgnoringOtherApps(true)

答案 4 :(得分:3)

Swift 3.0

NSApp.activate(ignoringOtherApps: true)

答案 5 :(得分:0)

Swift 2.0

NSApp.activateIgnoringOtherApps(true)

Helpful Programming Tips and Hacks

答案 6 :(得分:0)

斯威夫特 5.0 +

 NSWindow.orderFrontRegardless()