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

Teo*_*ing 46 cocoa

我正在使用此代码调出我的窗口:

[self.window makeKeyAndOrderFront:self];
[self.window setOrderedIndex:0];
Run Code Online (Sandbox Code Playgroud)

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

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

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

jtb*_*des 117

将您的应用程序带到前面:

[NSApp activateIgnoringOtherApps:YES];
Run Code Online (Sandbox Code Playgroud)

迅速:

NSApp.activateIgnoringOtherApps(true)
Run Code Online (Sandbox Code Playgroud)

斯威夫特3:

NSApp.activate(ignoringOtherApps: true)
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!有关将应用程序带到用户当前空间的想法吗? (5认同)
  • 我希望我可以投票300次. (4认同)

Nic*_*ley 26

也许你想要:

  [self.window setCollectionBehavior: NSWindowCollectionBehaviorCanJoinAllSpaces];
Run Code Online (Sandbox Code Playgroud)

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

  • 如何在不问的情况下学习所有这些微妙的东西?有时我觉得在可可土地上很迷茫. (3认同)
  • 当每个新的OS版本出来时,我倾向于阅读*all*发行说明.那里有很多很好的信息,而且只需要一两个小时. (2认同)
  • 嘿@Gon!似乎我确实找到了解决方案(至少它为我完成了工作).尝试使用`[self setCollectionBehavior:NSWindowCollectionBehaviorCanJoinAllSpaces | NSWindowCollectionBehaviorTransient]; [self setLevel:NSPopUpMenuWindowLevel];` (2认同)

art*_*has 6

斯威夫特 5.0 +

 NSWindow.orderFrontRegardless()
Run Code Online (Sandbox Code Playgroud)