Я использую этот код, чтобы иметь два разных поведения при нажатии правой или левой кнопки меню.NSEvent click right menu
Щелкните левой кнопкой мыши и щелкните правой кнопкой мыши + cmd.
Как я могу щелкнуть правой кнопкой мыши, не нажимая cmd + клик самым простым способом?
-(void)awakeFromNib {
NSImage *image = [NSImage imageNamed:@"menubar"];
NSImage *alternateImage = [NSImage imageNamed:@"menubar-white"];
statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
[statusItem setHighlightMode:YES];
[statusItem setImage:image];
[statusItem setAlternateImage:alternateImage];
[statusItem setAction:@selector(show)];
}
- (void)show {
NSLog(@"call show");
NSEvent *event = [NSApp currentEvent];
//Respond to the mouse click
if ([event modifierFlags] & NSCommandKeyMask) //Command
{
NSLog(@"RIGHT");
[statusItem setMenu:statusMenu];
}
else {
NSLog(@"LEFT");
//open window
}
}
Спасибо за вашу помощь!
Что-то вроде этого? - (void) show { NSUInteger нажатаButtonMask = [NSEvent нажатаMouseButtons]; BOOL leftMouseDown = ((нажатоButtonMask & (1 << 0)))! = 0; // BOOL rightMouseDown = ((нажатоButtonMask & (1 << 1)))! = 0; if (leftMouseDown) { NSLog (@ "left"); } } – Joannes
Да, я думаю, что это сработает. Честно говоря, я не тестировал этот код, но думаю, что он выполнит эту работу на основе документации в NSEvent.h. Еще одна вещь, о которой я действительно должен был упомянуть, заключается в том, что если вы работаете с классом, который наследуется от 'NSResponder', вы можете реализовать метод mouseDown для захвата левых мысок мыши и метода rightMouseDown для захвата правой мыши , –
Сообщения объектам Objective-C не могут быть постоянными (ну, тип может, как и у вас, но результаты метода не могут) из-за характера динамической отправки. – CodaFi