从状态栏打开另一个NSView-popup时弹出窗口没有隐藏

时间:2013-12-03 21:27:13

标签: objective-c nsview nswindowcontroller

我发现这个项目几乎完美地作为我正在尝试做的事情的基础https://github.com/shpakovski/Popup。它在菜单栏上放置一个图标,单击该图标会显示一个弹出窗口。弹出内部NSWindow由其委托控制,称为PanelController。它的委托方法大部分时间都是按预期执行的,例如,当我几乎在任何地方点击时,会执行(void)windowDidResignKey:(NSNotification *)通知。 但是,它没有执行第一次我单击菜单栏的另一项,例如skype项。这就是我得到的:

enter image description here

我错过了哪个NSWindow委托方法可以拦截第一次点击另一个菜单栏项目?

1 个答案:

答案 0 :(得分:0)

只是打开菜单不会使窗口重新设置键/主,而状态项的打开菜单与打开自己的菜单类似。

我只能找到一个菜单可以使窗口重新生成密钥的情况,即应用程序不是活动密钥时(我发现它有点奇怪,甚至可能)。因此,如果你的应用程序不需要拥有自己的窗口,除了弹出窗口,你可以让它在开始使用时放弃焦点(或者甚至可能有很小的延迟,以确保应用程序被停用并且重点放在其他应用程序):

-(void)applicationDidBecomeActive:(NSNotification *)notification
{
    [[NSApplication sharedApplication] hide:nil]; 
}