У меня есть приложение состояния, которое выполняется в строке меню. Поэтому я установил Application is agent (UIElement)
в true
в info.plst
. Это приводит к отсутствию значка док-станции и панели меню для моего приложения.приложение macOS menubar: главное меню не отображается
Однако у меня также есть окно предпочтений, которое пользователь может открыть из меню состояния. Вот как я его открыть:
if (!NSApp.setActivationPolicy(.regular)) {
print("unable to set regular activation policy")
}
NSApp.activate(ignoringOtherApps: true)
if let window = preferencesWindowController.window {
window.makeKeyAndOrderFront(nil)
}
окно показывает, как ожидалось, но в основном меню приложения с Файл, Edit и так далее, не появляется. Только если я нажму на другое приложение и вернусь в свое приложение, отобразится меню.
Я заметил, что если я изменить значение в info.plst
для false
и использовать NSApp.setActivationPolicy(.accessory)
в applicationDidFinishLaunching()
, он имеет тот же результат. Однако, если я вызываю NSApp.setActivationPolicy(.accessory)
с таймером за несколько миллисекунд после вызова applicationDidFinishLaunching()
, он работает, и главное меню отображается, как ожидалось. Это, однако, имеет побочный эффект, что значок приложения появляется на доке в течение нескольких секунд (пока не запущен таймер), что не очень приятно.
Есть ли у кого-нибудь идеи, что еще я мог попробовать? Что происходит при переключении активного приложения, которое я не делаю в коде?
Я использую версию 8.2.1 (8C1002) на MacOS 10.12.2 (16C67)
Спасибо!
«Окно отображается как ожидалось». Я полагаю, что окно также становится первым ответчиком и не похоже на фон или что-то в этом роде. Верный? – idmean
Это правильно. – Daniel
Я столкнулся с этой проблемой и с моим приложением. Ты не один :) – Bob