主要实现的功能是,当NSApp非active状态时候,右键app,会弹出上下文菜单(open contextual menus), 但是此时App不是活跃状态,所以在applicationDidFinishLaunching 定义全局的monitor,可以监控到app外边的键盘或者其他事件的点击,然后我们就可以关闭当前的上下文菜单
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
[NSEvent addGlobalMonitorForEventsMatchingMask:(NSKeyDownMask | NSLeftMouseDownMask | NSRightMouseDownMask | NSOtherMouseDownMask) handler:^(NSEvent * event) {
if (event.type == NSKeyDown) {
if ([event keyCode] == kVK_Escape) {
[[NSNotificationCenter defaultCenter] postNotificationName:TO_CLOS_CONTEXT_MENU_WINDOW_NOTIFICATION object:nil];
}
} else {
[[NSNotificationCenter defaultCenter] postNotificationName:TO_CLOS_CONTEXT_MENU_WINDOW_NOTIFICATION object:nil];
}
}];
}