Я разработчик .Net, которому нужно поместить небольшой проект в Mac, поэтому я почти ничего не знаю о Objective C. На самом деле код ниже был просто связкой в соломинках и стрельбой в темный.Cocoa: Щелкните правой кнопкой мыши NSStatusItem
Попытка создания программы меню состояния, которая открывает одно или другое окно в зависимости от того, является ли это щелчком левой кнопкой мыши или щелчком правой кнопки мыши/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(), чтобы определить, какая кнопка нажата (или если ctrl удерживается нажатой), запустите соответствующий код или чтобы меню стало известно о левом и правом щелчках. Но ни один из них не работал, когда я пытался это сделать.
Спасибо заранее.
Я предполагаю, что это просто опечатка, что и openLeftWindow: и openRightWindow: методы делают то же самое. В противном случае этот вопрос был бы бесполезен. – ughoavgfhw
правильно, они делают разные вещи. Извините за опечатку – Dan