在我的 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/