Заставьте MAAttachedWindow вести себя как NSMenu - PullRequest
0 голосов
/ 11 июля 2011

Я прочитал пост на этом сайте о том, как скрыть окно MAAttachedWindow, когда пользователь нажимает за его пределами.Как и в этом посте, я использую MAAttachedWindow вместе с statusItem. Скрыть MAAttachedWindow при нажатии за пределами .Он говорит, что я должен скрыть Окно, когда оно подает в отставку его состояние ключа.

Но мне интересно, есть ли какой-нибудь другой подход вместо статуса ключа окна.Работа со статусом ключа добавляет еще одну проблему: для того, чтобы получить уведомление, когда окно переходит в состояние ключа, все другие приложения должны были быть проигнорированы ранее (что означает, что окна всех других приложений становятся неактивными и теряют свой цвет, когдаотображается ваше меню состояния. Это делается [NSApp activIgnoringOtherApps: ДА]).Когда вы используете Spotlight- или Airport-statusItem, этого обычно не происходит.Пользователь не ожидал бы этого.

Кто-нибудь заставил MAAttachedWindow вести себя как настоящий NSMenu?Есть ли еще способ работать с состоянием ключа без этой проблемы?Спасибо за любые подсказки.

1 Ответ

0 голосов
/ 26 сентября 2011

Вы можете сделать NSPanel активным, не используя [NSApp activIgnoringOtherApps: ДА].Просто используйте NSNonactivatingPanelMask следующим образом:

NSPanel *panel = [super initWithContentRect:NSZeroRect 
                                              styleMask: NSNonactivatingPanelMask  
                                                backing:NSBackingStoreBuffered 
                                                  defer:NO];
...