Как вывести NSWindow на фронт и в текущее пространство? - PullRequest
45 голосов
/ 16 ноября 2009

Я использую этот код для вызова моего окна:

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

Но часто он будет находиться под другими окнами или отображаться на другом рабочем столе Space, в котором я последний раз открывал его. Как сделать так, чтобы он всегда отображался "спереди" для пользователя?

Обновление Я нашел ответ на ранее заданный вопрос; сделать так, чтобы окно отображалось до верха других окон: [NSApp activIgnoringOtherApps: ДА];

Но как переместить приложение в текущее пространство пользователя?

Ответы [ 6 ]

113 голосов
/ 16 ноября 2009

Чтобы вывести ваше приложение на передний план:

[NSApp activateIgnoringOtherApps:YES];

Swift:

NSApp.activateIgnoringOtherApps(true)

Swift 3:

NSApp.activate(ignoringOtherApps: true)
25 голосов
/ 16 ноября 2009

Возможно, вы хотите:

  [self.window setCollectionBehavior: NSWindowCollectionBehaviorCanJoinAllSpaces];

Поэкспериментируйте с другими поведениями коллекций ... Я обнаружил, что NSWindowCollectionBehaviorMoveToActiveSpace был немного глючит в 10.5, но сейчас может быть лучше.

3 голосов
/ 25 ноября 2016

Свифт 3.0

NSApp.activate(ignoringOtherApps: true)
3 голосов
/ 30 января 2016

В Swift 2 синтаксис выглядит немного иначе:

NSApplication.sharedApplication().activateIgnoringOtherApps(true)
3 голосов
/ 16 ноября 2009

Но как переместить приложение в текущее пространство пользователя?

Вы не делаете. Пространства содержат окна, а не приложения. (Вот почему свойство collectionBehavior находится в NSWindow, а не в NSApplication.)

0 голосов
/ 24 февраля 2016
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...