我设置了一个菜单并分配了一个委托
- (void)constructAndDisplayMenu {
NSMenu * menu = [[NSMenu alloc] initWithTitle:@""];
{
NSMenuItem * item = [[NSMenuItem alloc] initWithTitle:@"1" action:@selector(menuItemPressed:) keyEquivalent:@""];
[menu addItem:item];
}
{
NSMenuItem * item = [[NSMenuItem alloc] initWithTitle:@"2" action:@selector(menuItemPressed:) keyEquivalent:@""];
[menu addItem:item];
}
{
NSMenuItem * item = [[NSMenuItem alloc] initWithTitle:@"3" action:@selector(menuItemPressed:) keyEquivalent:@""];
[menu addItem:item];
}
[menu popUpMenuPositioningItem:nil atLocation:NSMakePoint(2,2) inView:self];
self.menu = menu;
menu.delegate = self;
}菜单会显示出来,我会得到像menuDidClose:这样的委托回调,但是我没有接到menuHasKeyEquivalent:forEvent:target:action:的电话
- (BOOL)menuHasKeyEquivalent:(NSMenu*)menu forEvent:(NSEvent*)event target:(id*)target action:(SEL*)action {
NSLog(@"%@", event);
return NO;
}键入键盘时,NSMenu会自动更改突出显示的项,但不会对委托执行回调。
发布于 2015-08-14 20:16:55
menuHasKeyEquivalent:forEvent:target:action:方法适用于应用程序的菜单栏,而不是上下文菜单。即使应用程序菜单栏中的菜单在使用快捷键时打开,也不会被调用。
它的行为并没有被清楚地记录下来,但是它在WWDC 2010届会145中被简短的提到过。
https://stackoverflow.com/questions/31992042
复制相似问题