2011-10-14 3 views
3

У меня есть NSCollectionView в главном окне приложения, которое управляет коллекцией настраиваемых элементов NSView. Каждому настраиваемому представлению назначается контекстное меню. Я хочу добавить клавиши быстрого доступа к некоторым элементам, например, связать ключ «удалить» с действием «удалить элемент из коллекции». Я добавил ключевые эквиваленты в пункты контекстного меню через IB, но вопрос в том, как заставить элементы коллекции отвечать на нажатые клавиши?Пользовательское контекстное меню NSView и клавиши

Я знаю, что могу достичь этого, добавив это меню в главное меню NSApp и отслеживая выбранный элемент. Есть ли другой способ помимо этого?

ответ

0

Вы можете добавить что-то вроде этого, чтобы ваш NSCollectionView подкласса:

- (BOOL)performKeyEquivalent:(NSEvent *)theEvent 
{ 
    BOOL rv = NO; 

    id firstResponder = self.window.firstResponder; 

    if ([firstResponder isKindOfClass:[NSView class]] && [firstResponder isDescendantOf:self]) { 
     // Note: performKeyEquivalent: messages come DOWN the view hierarchy, not UP the responder chain. 

     // Perform the key equivalent 

    } 

    if (!rv) { 
     rv = [super performKeyEquivalent:theEvent]; 
    } 

    return rv; 
} 
Смежные вопросы