macos - COCOA Mac 应用程序中 NSSegmentedControl 按钮的键盘快捷键

标签 macos cocoa nssegmentedcontrol

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

有人做过这种类型的功能吗?

感谢和问候, 巴润

最佳答案

由于我没有找到通过界面生成器将键盘绑定(bind)添加到 NSSegmentedControl 的方法,因此我以编程方式进行了 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)。

为了使此示例完整,我在此处添加了当有人点击 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/

相关文章:

macos - 在没有 root 权限的情况下定期在 Mac OS X 上运行 shell 脚本

cocoa - 将 iOS 应用程序移植到 mac——如何处理内存管理?

xcode - 获取 NSTextField 的 keyDown 事件

objective-c - 使用键盘控制 NSSegmentedControl

macos - 让 Mac 成为本地基于 MAMP 的服务器的个人 WiFi 热点?

macos - 64 位 Mac OS X Lion 上的 nasm/gcc 问题

objective-c - 更改窗口显示的内容 (Mac - Cocoa)

cocoa - 用 cocoa 保存二进制数据

xcode - 拖动 NSSegmentedControl 时文本模糊

objective-c - 以编程方式定义 NSSegmentedCell