2011-07-11 55 views
0

我在本網站上閱讀過有關如何在用戶單擊外部時隱藏MAAttachedWindow的帖子。在這篇文章中,我將MAAttachedWindow和一個statusItem一起使用。 Hide MAAttachedWindow when clicking outside。它說我應該隱藏窗口,當它退出它的關鍵狀態。使MAAttachedWindow的行爲與NSMenu類似

但我不知道是否有其他方法,而不是窗口的關鍵狀態。使用密鑰狀態會增加另一個問題: 爲了在窗口退出鍵狀態時獲得通知,所有其他應用程序必須在之前被忽略(這意味着所有其他應用程序的窗口變爲非活動狀態並且失去其顏色當你的statusMenu出現時,它由[NSApp activateIgnoringOtherApps:YES]完成)。 當您使用Spotlight或Airport-statusItem時,通常不會發生這種情況。用戶不會期望這一點。

有沒有人讓MAAttachedWindow的行爲像一個真正的NSMenu?在沒有這個問題的情況下,仍然有辦法處理關鍵狀態?謝謝你的提示。

回答

0

您可以在不使用[NSApp activateIgnoringOtherApps:YES]的情況下使NSPanel處於活動狀態。只需使用如下NSNonactivatingPanelMask:

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