我正在使用这段代码弹出我的窗口:
[self.window makeKeyAndOrderFront:self];
[self.window setOrderedIndex:0];
但通常它会在其他窗口下面或者显示在我最后打开的其他桌面空间中。如何使它总是出现在用户的“前面”?
更新 我从之前提出的问题中找到了答案;使窗口显示在其他窗口的顶部: [NSApp activateIgnoringOtherApps:YES];
但如何将应用程序移动到用户当前的空间中?
[NSApp activateIgnoringOtherApps:YES];
Swift:
NSApp.activateIgnoringOtherApps(true)
Swift 3:
NSApp.activate(ignoringOtherApps: true)
也许你想要:
[self.window setCollectionBehavior: NSWindowCollectionBehaviorCanJoinAllSpaces];
尝试使用其他的集合行为...我在10.5版本中发现NSWindowCollectionBehaviorMoveToActiveSpace
有点问题,但现在可能会更好。
[NSApp setActivationPolicy:]
并将 activationPolicy 设置为 NSApplicationActivationPolicyAccessory
或 NSApplicationActivationPolicyProhibited
。这样做会导致你的应用程序菜单和 Dock 图标消失。 - Gon[self setCollectionBehavior:NSWindowCollectionBehaviorCanJoinAllSpaces | NSWindowCollectionBehaviorTransient]; [self setLevel:NSPopUpMenuWindowLevel];
。 - ULazdinsSwift 5.0 +
NSWindow.orderFrontRegardless()
func windowDidBecomeKey(_ notification: Notification) {
guard let window = notification.object as? NSWindow else { return }
guard window != self.window else { return }
self.window = window
}
- S.E.NSApplication.sharedApplication().activateIgnoringOtherApps(true)
NSApp
只是返回 NSApplication.sharedApplication()
单例。 - BlaszardNSApp.activate(ignoringOtherApps: true)
NSApp.activate(ignoringOtherApps: true)
NSApp.windows.first?.orderFrontRegardless()
NSApp.windows.first?.orderFrontRegardless()