내 응용 프로그램의 주 메뉴 위에 표시되는 전체 화면 투명한 창이 있습니다. ignoresMouseEvents
이 NO로 설정되어 있습니다.-SendEvent가 예상대로 동작하지 않습니다.
[NSEvent addLocalMonitorForEventsMatchingMask:NSLeftMouseDownMask handler:^(NSEvent *event) {
[self click:event];
return event;
}];
내 응용 프로그램이 활성화되어있는 동안 사용자가 클릭이 방법 click
따라서 호출 될 때마다 : 그럼에도 불구하고 마우스 클릭을 수신하려면이 코드를 추가
- (BOOL)click:(NSEvent *)event {
NSPoint coordinate = [event locationInWindow];
float ycoord = coordinate.y;
float menuheight = [[NSApp mainMenu] menuBarHeight];
float windowheight = [[NSApp mainWindow] frame].size.height;
if (ycoord >= windowheight - menuheight && ![[NSApp mainWindow] ignoresMouseEvents]) {
[[NSApp mainWindow] setIgnoresMouseEvents:YES];
[NSApp sendEvent:event];
NSLog(@"click");
[[NSApp mainWindow] setIgnoresMouseEvents:NO];
return YES;
}
return NO;
}
당신이 볼 수 있듯이를, 그것은 변경 주 메뉴 모음에있는 클릭의 경우 ignoresMouseEvents
주 창의 속성은 sendEvent:
을 NSApplication
으로 호출합니다. 마지막으로 메인 창의 ignoresMouseEvents
속성을 NO로 다시 변경합니다.
그러나 주 메뉴 모음을 클릭 할 때 로그에 '클릭'이라고 표시 되더라도 클릭은 아무 효과가 없습니다. 예를 들어 메뉴 항목 (예 : '파일'메뉴 항목)을 클릭하면 해당 메뉴 (이 경우 파일 메뉴)가 열리지 않습니다.
내가 뭘 잘못하고 있니?
대단히 감사합니다, 우수 답변! – Fatso