2015-08-13 2 views
0

я настроить меню и назначить делегатаNSMenu не призывают делегатов 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 изменяет выделенный элемент автоматически, но не обратный вызов на делегата не делается

ответ

1

menuHasKeyEquivalent:forEvent:target:action: работает в строке меню приложения, а не в контекстных меню. И даже если меню из панели меню приложения открыто, когда вы используете комбинацию клавиш, он не будет вызван.

Его поведение явно не задокументировано, но вкратце было упомянуто в WWDC 2010 Session 145.

Смежные вопросы