55

我正在使用这段代码来打开我的窗口:

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

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

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

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

4

8 回答 8

135

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

[NSApp activateIgnoringOtherApps:YES];

迅速:

NSApp.activateIgnoringOtherApps(true)

斯威夫特 3:

NSApp.activate(ignoringOtherApps: true)
于 2009-11-16T06:31:19.027 回答
30

也许你想要:

  [self.window setCollectionBehavior: NSWindowCollectionBehaviorCanJoinAllSpaces];

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

于 2009-11-16T06:35:10.050 回答
4

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

NSApplication.sharedApplication().activateIgnoringOtherApps(true)
于 2016-01-30T10:06:25.910 回答
3

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

你没有。空间包含窗口,而不是应用程序。(这就是为什么该collectionBehavior属性位于 NSWindow,而不是 NSApplication 上。)

于 2009-11-16T15:32:59.403 回答
3

斯威夫特 3.0

NSApp.activate(ignoringOtherApps: true)
于 2016-11-25T08:54:27.517 回答
3

斯威夫特 5.0 +

 NSWindow.orderFrontRegardless()
于 2021-05-21T17:33:32.080 回答
1

如果你想让你的应用程序出现在最前面,即使它被最小化激活它(给定活动焦点),然后使用这两个:

            NSApp.activate(ignoringOtherApps: true)
            NSApp.windows.first?.orderFrontRegardless()

如果你只想把它带到前面,而不给它焦点,只需使用:

            NSApp.windows.first?.orderFrontRegardless()
于 2021-10-16T23:58:51.163 回答
0

斯威夫特 2.0

NSApp.activateIgnoringOtherApps(true)

有用的编程技巧和技巧

于 2016-02-24T14:13:58.527 回答