Ответ 1
Чтобы перенести приложение на передний план:
[NSApp activateIgnoringOtherApps:YES];
Swift:
NSApp.activateIgnoringOtherApps(true)
Swift 3:
NSApp.activate(ignoringOtherApps: true)
Я использую этот код, чтобы открыть окно:
[self.window makeKeyAndOrderFront:self];
[self.window setOrderedIndex:0];
Но часто это будет под другими окнами или отображаться на другом рабочем столе Space, в котором я в последний раз его открываю. Как заставить его всегда отображаться "перед" пользователю?
Update Я нашел ответ от ранее заданного вопроса; чтобы окно отображалось вверху других окон: [NSApp activateIgnoringOtherApps: YES];
Но как перенести приложение в текущее пространство пользователя?
Чтобы перенести приложение на передний план:
[NSApp activateIgnoringOtherApps:YES];
Swift:
NSApp.activateIgnoringOtherApps(true)
Swift 3:
NSApp.activate(ignoringOtherApps: true)
Возможно, вы хотите:
[self.window setCollectionBehavior: NSWindowCollectionBehaviorCanJoinAllSpaces];
Экспериментируйте с другими типами поведения в коллекции... Я обнаружил, что NSWindowCollectionBehaviorMoveToActiveSpace
был немного ошибкой в 10.5, но теперь может быть лучше.
Но как перенести приложение в текущее пространство пользователя?
Нет. Пространства содержат окна, а не приложения. (Поэтому свойство collectionBehavior
находится в NSWindow, а не в NSApplication.)
Синтаксис, похоже, немного отличается от Swift 2:
NSApplication.sharedApplication().activateIgnoringOtherApps(true)
NSApp.activate(игнорированиеOtherApps: true)
Swift 2.0
NSApp.activateIgnoringOtherApps(true)