【发布时间】:2010-12-30 19:59:46
【问题描述】:
我是一个 .Net 开发人员,需要将一个小项目移植到 Mac 中,所以我对 Objective C 几乎一无所知。事实上,下面的代码只是一堆抓着稻草在黑暗中射击的东西。
尝试构建一个状态菜单程序,根据是左键单击还是右键单击/ctrl+单击来打开一个或另一个窗口。这是我所拥有的,它仅适用于左键单击(显然):
-(void) awakeFromNib{
NSBundle *bundle = [NSbundle mainBundle];
statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength] retain];
[statusImage = [[NSImage alloc] initWithContentsOfFile:[bundle pathForResource:@"icon" ofType:@"png"]];
[statusItem setImage:statusImage];
[statusItem setToolTip:@"Program Name"];
[statusItem setHighlightMode:YES];
[statusItem setAction:@selector(openWin:)];
[statusItem setTarget: self];
}
-(void)openWin:(id)sender{
[self openLeftWindow:sender];
}
-(IBAction)openLeftWindow:(id)sender{
//Code to populate Left Click Window
[leftWindow makeKeyAndorderFront:nil];
}
-(IBAction)openRightWindow:(id)sender{
//Code to populate Right Click Window
[rightWindow makeKeyAndorderFront:nil];
}
在我看来,解决方案可能是 openWin() 函数中的 if 语句来确定单击了哪个按钮(或者是否按住 ctrl)然后运行适当的代码或让菜单知道左键和右键。但是当我试图这样做时,这些都没有奏效。
提前致谢。
【问题讨论】:
-
我假设 openLeftWindow: 和 openRightWindow: 方法都做同样的事情只是一个错字。否则,这个问题就没用了。
-
正确,他们做不同的事情。抱歉打错了
标签: cocoa right-click nsstatusitem