我正在使用这段代码来打开我的窗口:
[self.window makeKeyAndOrderFront:self];
[self.window setOrderedIndex:0];
但通常它会在其他窗口下方或显示在我上次打开它的其他 Space 桌面中。如何让它始终显示在用户“前面”?
更新 我从之前提出的问题中找到了答案;使窗口显示在其他窗口的顶部:[NSApp activateIgnoringOtherApps:YES];
但是如何将应用程序移动到用户的当前空间?
要将您的应用程序放在最前面:
[NSApp activateIgnoringOtherApps:YES];
迅速:
NSApp.activateIgnoringOtherApps(true)
斯威夫特 3:
NSApp.activate(ignoringOtherApps: true)
也许你想要:
[self.window setCollectionBehavior: NSWindowCollectionBehaviorCanJoinAllSpaces];
尝试其他收集行为......我发现NSWindowCollectionBehaviorMoveToActiveSpace
在 10.5 中有点错误,但现在可能会更好。
Swift 2 的语法似乎有点不同:
NSApplication.sharedApplication().activateIgnoringOtherApps(true)
但是如何将应用程序移动到用户的当前空间?
你没有。空间包含窗口,而不是应用程序。(这就是为什么该collectionBehavior
属性位于 NSWindow,而不是 NSApplication 上。)
NSApp.activate(ignoringOtherApps: true)
斯威夫特 5.0 +
NSWindow.orderFrontRegardless()
如果你想让你的应用程序出现在最前面,即使它被最小化并激活它(给定活动焦点),然后使用这两个:
NSApp.activate(ignoringOtherApps: true)
NSApp.windows.first?.orderFrontRegardless()
如果你只想把它带到前面,而不给它焦点,只需使用:
NSApp.windows.first?.orderFrontRegardless()