【发布时间】:2015-04-10 16:01:16
【问题描述】:
除了 NSStatusBar 中显示的图标外,我还有一个带有自己窗口的 OSX 应用程序。 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,但没有什么能解决我的问题。任何帮助将不胜感激。谢谢。 T
更新: 我最终使用优秀的库 CCNStatusItem
创建了我的 StatusItem【问题讨论】:
-
canBecomeKeyWindow 仅适用于 NSWindow 对象,您不需要。您是否需要在弹出窗口出现之前始终单击两次,或者仅在您第一次尝试时才会发生?另外,您能否将 togglePanel: 方法的内容添加到问题中?
标签: objective-c macos cocoa nsstatusitem