NSMenu 不调用委托 menuHasKeyEquivalent:
NSMenu not calling delegates menuHasKeyEquivalent:
我确实设置了一个菜单并分配了一个代表
- (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 会自动更改突出显示的项目,但不会完成委托回调
menuHasKeyEquivalent:forEvent:target:action:
方法适用于应用程序的菜单栏,不适用于上下文菜单。
即使在您使用快捷键时打开了应用程序菜单栏中的菜单,也不会调用它。
它的行为没有明确记录,但在 WWDC 2010 Session 145.
中被简要提及
我确实设置了一个菜单并分配了一个代表
- (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 会自动更改突出显示的项目,但不会完成委托回调
menuHasKeyEquivalent:forEvent:target:action:
方法适用于应用程序的菜单栏,不适用于上下文菜单。
即使在您使用快捷键时打开了应用程序菜单栏中的菜单,也不会调用它。
它的行为没有明确记录,但在 WWDC 2010 Session 145.
中被简要提及