Пользовательское контекстное меню и клавиши NSView - PullRequest
3 голосов
/ 14 октября 2011

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

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

1 Ответ

0 голосов
/ 30 августа 2016

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