Я разрабатываю приложение только для строки меню для OS X и изо всех сил пытаюсь заставить окно настроек отображаться перед другими приложениями.
Настройка приложения
«Приложение только для Menubar» означает:
- Я удалил «Начальный контроллер» из
NSWindowController
в основном файле раскадровки. Главное окно раскадровки не используется в моем приложении - Я добавил
NSMenu
в «Сцену приложения» в основной раскадровке. Это станет моим меню в строке меню - Я установил
LSUIElement
наYES
, чтобы скрыть значок док-станции - Я установил
LSBackgroundOnly
наNO
(см. NSWindow makeKeyAndOrderFront заставляет окно отображаться , но не Key или Front)
Когда приложение запускается, я создаю NSStatusItem
и добавляю NSMenu
из раскадровки в качестве его меню. Все это работает нормально - приложение запускается, не показывает ни окна, ни значка док-станции, а только элемент строки меню, содержащий меню из раскадровки.
Окно настроек
Теперь я хотел добавить окно настроек, которое отображается при нажатии на запись в строке меню. Поэтому я:
- Создал новый .xib-файл и добавил к нему
NSWindow
- Создал кастом
NSWindowController
, который связывает розетки и действия - Создал пользовательский
NSWindowController
, используяinitWithNibNamed:
при запуске приложения.
Когда щелкают по пункту «Настройки» в меню, я пытаюсь вывести окно настроек на передний план, используя:
[self.settingsWindowController.window center];
[self.settingsWindowController.window showWindow:self];
[self.settingsWindowController.window makeKeyAndOrderFront:NSApp];
Окно отображается, но не выводится на передний план, а скорее скрыто за другими приложениями.
Есть идеи, как это решить? Спасибо!