Всплывающее окно не скрывается при открытии другого всплывающего окна NSView из строки состояния
Я нашел этот проект, который почти идеально работает в качестве основы для того, что я пытаюсь сделать, https://github.com/shpakovski/Popup. Он помещает значок в строке меню, который при нажатии отображает всплывающее окно. Внутреннее всплывающее окно NSWindow управляется его делегатом, который называется PanelController. Его методы делегата выполняются большую часть времени, как и ожидалось, например, уведомление (void)windowDidResignKey:(NSNotification *) выполняется, когда я щелкаю почти где угодно. Тем не менее, он не выполняется при первом щелчке по другому элементу строки меню, например, пункту Skype. Вот что я получаю:
Любые идеи о том, какой метод делегата NSWindow мне не хватает, чтобы перехватить первый щелчок по другому элементу строки меню?
1 ответ
Простое открытие меню не приводит к тому, что окно смещается клавишей /main, а открытие меню из элемента состояния работает так же, как открытие собственного меню.
Я мог бы найти только один случай, когда меню может заставить окно подавать команду, когда приложение не является активным (я нахожу это немного странным, что это даже возможно). Итак, если вашему приложению не нужны собственные окна, кроме всплывающего окна, вы можете заставить его отказаться от фокуса при запуске, например, (или, может быть, даже с небольшой задержкой, чтобы убедиться, что приложение было деактивировано и фокус был отдан другим пользователям). приложение):
-(void)applicationDidBecomeActive:(NSNotification *)notification
{
[[NSApplication sharedApplication] hide:nil];
}