让MAAttachedWindow表现得像NSMenu

时间:2011-07-11 00:32:56

标签: nswindow nsmenu nsstatusitem

我在这个网站上看过如何在用户点击MAAttachedWindow时隐藏MAAttachedWindow的帖子。在这篇文章中,我将MAAttachedWindow与statusItem一起使用。 Hide MAAttachedWindow when clicking outside。 它说我应该在它关闭状态时隐藏窗口。

但我想知道是否有其他方法而不是窗口的键状态。使用密钥状态会增加另一个问题: 为了在窗口重新启动键状态时收到通知,之前必须忽略所有其他应用程序(这意味着当statusMenu出现时,所有其他应用程序的窗口将变为非活动状态并失去颜色。由[NSApp]完成activateIgnoringOtherApps:YES])。 当您使用Spotlight-或Airport-statusItem时,通常不会发生这种情况。用户不会期望这样。

有没有人让MAAttachedWindow表现得像真正的NSMenu?是否有办法在没有这个问题的情况下使用密钥状态?谢谢你的任何提示。

1 个答案:

答案 0 :(得分:0)

您可以在不使用[NSApp activateIgnoringOtherApps:YES]的情况下激活NSPanel。只需像这样使用NSNonactivatingPanelMask:

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