Заставьте MAAttachedWindow вести себя как NSMenu

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

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

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


person Wolfgang    schedule 11.07.2011    source источник


Ответы (1)


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

NSPanel *panel = [super initWithContentRect:NSZeroRect 
                                              styleMask: NSNonactivatingPanelMask  
                                                backing:NSBackingStoreBuffered 
                                                  defer:NO];
person Levi Nunnink    schedule 26.09.2011