如何将 NSWindow 带到前面和当前空间?
Posted
技术标签:
【中文标题】如何将 NSWindow 带到前面和当前空间?【英文标题】:How to bring NSWindow to front and to the current Space? 【发布时间】:2010-12-16 23:01:49 【问题描述】:我正在使用这段代码来打开我的窗口:
[self.window makeKeyAndOrderFront:self];
[self.window setOrderedIndex:0];
但它通常会在其他窗口下方或显示在我上次打开它的其他 Space 桌面中。如何让它始终显示在用户“前面”?
更新 我从之前提出的问题中找到了答案;使窗口显示在其他窗口的顶部: [NSApp activateIgnoringOtherApps:YES];
但是如何将应用移动到用户的当前空间?
【问题讨论】:
【参考方案1】:要将您的应用放在首位:
[NSApp activateIgnoringOtherApps:YES];
斯威夫特:
NSApp.activateIgnoringOtherApps(true)
斯威夫特 3:
NSApp.activate(ignoringOtherApps: true)
【讨论】:
谢谢!关于将应用程序带到用户当前空间的任何想法?【参考方案2】:也许你想要:
[self.window setCollectionBehavior: NSWindowCollectionBehaviorCanJoinAllSpaces];
尝试其他收集行为...我发现NSWindowCollectionBehaviorMoveToActiveSpace
在 10.5 中有点错误,但现在可能会更好。
【讨论】:
非常感谢。这正是我想要的。 我如何在不问的情况下学习所有这些微妙的东西?有时我在可可之地感到非常迷失。 我倾向于在每个新的操作系统版本发布时阅读所有发行说明。里面有很多很好的信息,而且只需要一两个小时。 阅读更重要的编程指南和框架参考。从 Cocoa Fundamentals Guide 开始,然后继续前进。 嘿@Gon!似乎我确实找到了解决方案(至少它为我完成了这项工作)。尝试使用[self setCollectionBehavior:NSWindowCollectionBehaviorCanJoinAllSpaces | NSWindowCollectionBehaviorTransient]; [self setLevel:NSPopUpMenuWindowLevel];
【参考方案3】:
但是如何将应用移动到用户的当前空间?
你没有。空间包含窗口,而不是应用程序。 (这就是为什么 collectionBehavior
属性在 NSWindow 上,而不是在 NSApplication 上。)
【讨论】:
NSWindow 有一个名为 FloatingPanel 的子类,可以放在空格上。 gist.github.com/jordibruin/8ae7b79a1c0ce2c355139f29990d5702 self.collectionBehavior.insert(.fullScreenAuxiliary) self.collectionBehavior.insert(.canJoinAllSpaces)【参考方案4】:语法似乎与 Swift 2 有点不同:
NSApplication.sharedApplication().activateIgnoringOtherApps(true)
【讨论】:
NSApp
只返回 NSApplication.sharedApplication()
单例。【参考方案5】:
Swift 2.0
NSApp.activateIgnoringOtherApps(true)
Helpful Programming Tips and Hacks
【讨论】:
【参考方案6】:斯威夫特 3.0
NSApp.activate(ignoringOtherApps: true)
【讨论】:
【参考方案7】:斯威夫特 5.0 +
NSWindow.orderFrontRegardless()
【讨论】:
【参考方案8】:如果你想让你的应用程序出现在最前面,即使它的最小化并且已经激活(给定了活动焦点),那么使用这两个:
NSApp.activate(ignoringOtherApps: true)
NSApp.windows.first?.orderFrontRegardless()
如果你只想把它带到前面,而不给它焦点,只需使用:
NSApp.windows.first?.orderFrontRegardless()
【讨论】:
以上是关于如何将 NSWindow 带到前面和当前空间?的主要内容,如果未能解决你的问题,请参考以下文章
NSWindow 在每个应用程序的前面和菜单栏的前面 Objective-c Mac