NSStatusItem仅在单击两次后响应

时间:2015-04-10 16:01:16

标签: objective-c macos cocoa nsstatusitem

我有一个OSX应用程序,除了NSStatusBar中显示的图标外,还有自己的窗口。 NSStatusBar的原因是在主窗口关闭时启用应用程序在后台运行。当我尝试单击状态栏图标时,我必须在收到响应之前单击两次(显示一个弹出窗口)。我想点击一次,立即得到回应。 NStatusBar的设置如下:

NSStatusItem *statusItem = [[NSStatusBar systemStatusBar]statusItemWithLength:32];
        statusItemView = [[SDStatusItemView alloc] initWithStatusItem:statusItem];
        statusItemView.image = [NSImage imageNamed:@"myLogo"];
        statusItemView.alternateImage = [NSImage imageNamed:@"myLogo"];
        statusItemView.target=self;
        statusItemView.action = @selector(togglePanel:);

        [self.statusItemView.window setIgnoresMouseEvents:NO];
        [self.statusItemView.window setAcceptsMouseMovedEvents:YES];

我的statusItemView(NSView的子类)设置为:

-(BOOL) acceptsFirstResponder{
    return YES;
}

- (BOOL)canBecomeKeyWindow
{
    return YES;
}

除了在收到回复之前我必须单击状态栏图标两次外,一切正常。我用谷歌搜索了这个questions这样的one,但没有解决我的问题。任何帮助将不胜感激。谢谢。 Ť

更新 我最终使用优秀的库CCNStatusItem

创建了我的StatusItem

1 个答案:

答案 0 :(得分:1)

你无法真正影响菜单栏的窗口。使用自定义NSView作为状态项。

在这里查看下面的投票答案:NSStatusItem releases icon