이 코드를 사용하면 메뉴에서 오른쪽 또는 왼쪽을 클릭 할 때 두 가지 다른 동작을 사용할 수 있습니다.NSEvent 오른쪽 메뉴 클릭
왼쪽 클릭 및 오른쪽 클릭 + 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 pressedButtonMask = [NSEvent pressedMouseButtons]; BOOL leftMouseDown = ((pressedButtonMask & (1 << 0)))! = 0; // BOOL rightMouseDown = ((pressedButtonMask & (1 << 1)))! = 0; if (leftMouseDown) { NSLog (@ "left"); } } – Joannes
그래, 그게 효과가있을 것 같아. 솔직히이 코드를 테스트하지는 않았지만 NSEvent.h의 설명서를 기반으로 작업을 수행 할 것입니다. 내가 정말로 언급 했어야 할 또 다른 점은'NSResponder'를 상속받은 클래스로 작업하는 경우 마우스 왼쪽 버튼을 잡는'mouseDown' 메소드와 오른쪽 마우스 버튼을 잡는'rightMouseDown' 메소드를 구현할 수 있다는 것입니다 . –
Objective-C 객체에 대한 메시지를 동적으로 처리 할 수 없으므로 상수로 만들 수 없습니다 (유형은 사용자가 가질 수 있지만 메소드의 결과는 가져올 수 없음). – CodaFi