Сочетания клавиш для кнопки NSSegmentedControl в приложении COCOA Mac

В моем приложении COCOA Mac есть одна кнопка NSSegmentedControl для включения / выключения очереди. Теперь мне нужно предоставить сочетание клавиш для того же. Например, для очереди, если она уже была выключена, и наоборот.

Кто-нибудь делал этот тип функционала?

Спасибо и всего наилучшего, Барун

1 ответ

Решение

Поскольку я не нашел способа добавить привязку клавиатуры к NSSegmentedControl через конструктор интерфейса, я сделал id программно. Я создал собственный класс Window с именем PMWindow:

@implementation PMWindow

- (BOOL)acceptsFirstResponder {
    return YES;
}

- (void)keyDown:(NSEvent *)theEvent {
    if([self.viewController.lastNextControl isEnabled]) {
        if([theEvent keyCode] == 123) {
            [self.viewController last];
        } else if([theEvent keyCode] == 124) {
            [self.viewController next];
        }
    }
}

@end

Я добавил свой контроллер представления с именем PMViewController через конструктор интерфейса в класс Window PMWindow. В этом примере я реагирую на нажатия клавиш <стрелка влево> (123) и <стрелка вправо> (124).

Для полноты этого примера я добавил здесь реализацию метода, который вызывается, когда кто-то попадает в ячейку моего элемента NSSegmentedControl:

- (IBAction)lastOrNext:(id)sender {
    switch ([sender selectedSegment]) {
        case 0:
            [self last];
            break;
        case 1:
            [self next];
            break;
    }
}
Другие вопросы по тегам