Пользовательское контекстное меню и клавиши NSView

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

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


person Inso Reiges    schedule 14.10.2011    source источник


Ответы (1)


Вы можете добавить что-то вроде этого в свой подкласс 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;
}
person Steve Shepard    schedule 30.08.2016