Soy un desarrollador de .Net que necesita convertir un pequeño proyecto en Mac, así que no sé casi nada sobre Objective C. De hecho, el siguiente código era solo un montón de aferramiento a pajitas y disparos en la oscuridad.Cocoa: haga clic con el botón secundario en NSStatusItem
Intentando crear un programa de menú de estado que abra una u otra ventana dependiendo de si está haciendo clic izquierdo o haciendo clic con el botón derecho/ctrl + clic. Aquí es lo que tengo, y que funciona para hacer clic izquierdo solamente (obviamente):
-(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];
}
Me parece que la solución sería o bien una sentencia if en la función OpenWin() para determinar qué botón se hizo clic (o si se presionó ctrl), ejecute el código apropiado o haga que el menú tenga en cuenta los clics izquierdo y derecho. Pero ninguno de estos funcionó cuando intenté hacerlo.
Gracias de antemano.
Estoy asumiendo que es sólo un error tipográfico que tanto el openLeftWindow: openRightWindow y métodos: hacen lo mismo. De lo contrario, esta pregunta sería inútil. – ughoavgfhw
correcto, hacen cosas diferentes. Perdón por el error tipográfico – Dan