2015-08-13 1 views
0

Je l'ai installé un menu et sont un déléguéNSMenu pas appeler les délégués 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; 

} 

Le menu se montre, et que je reçois callbacks des délégués comme menuDidClose:, mais je ne suis pas un appel à menuHasKeyEquivalent:forEvent:target:action:

- (BOOL)menuHasKeyEquivalent:(NSMenu*)menu forEvent:(NSEvent*)event target:(id*)target action:(SEL*)action { 

    NSLog(@"%@", event); 

    return NO; 
} 

Lors de la saisie au clavier, le NSMenu modifie l'élément mis en surbrillance automatiquement, mais aucun rappel sur délégué est fait

Répondre

1

leLa méthodefonctionne pour la barre de menus de l'application et non pour les menus contextuels. Et même si un menu de la barre de menus de l'application est ouvert alors que vous utilisez votre touche de raccourci, il ne sera pas appelé.

Son comportement n'est pas clairement documenté mais il a été brièvement mentionné dans WWDC 2010 Session 145.