在我的COCOA Mac应用程序中,有一个NSSegmentedControl按钮用于队列ON/OFF功能。现在,我需要提供相同的键盘快捷键。例如,对于“队列开”(如果已关闭),反之亦然。

有没有人做过这种功能的?

感谢致敬,
巴伦

最佳答案

由于我没有找到通过接口(interface)构建器向NSSegmentedControl添加键盘绑定(bind)的方法,因此我以编程方式进行了id操作。我创建了一个名为 PMWindow 的自定义Window类:

@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 的 View Controller 添加到Window类PMWindow中。在此示例中,我对按键 (123)和 (124)使用react。

为了使本示例更完整,我在此处添加了方法的实现,当有人点击我的NSSegmentedControl元素的单元格时将调用该方法:
- (IBAction)lastOrNext:(id)sender {
    switch ([sender selectedSegment]) {
        case 0:
            [self last];
            break;
        case 1:
            [self next];
            break;
    }
}

关于macos - COCOA Mac应用程序中NSSegmentedControl按钮的键盘快捷键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13085651/

10-08 21:25