我有一个窗口,可以使用tab和shift-tab键在其控件之间进行快速选项卡。但是,我还希望能够使用向上和向下箭头键在这些控件之间移动(在本例中)。如何实现这一目标?
答案 0 :(得分:2)
告诉窗口使当前视图的下一个/上一个键视图成为第一个响应者。
答案 1 :(得分:1)
对于非文本控件,你应该能够在响应者链中的某个地方(例如你的NSWindowController)获得这样的东西:
- (void)keyDown:(NSEvent *)event {
NSWindow *window = [self window];
switch ([[event characters] objectAtIndex:0]) {
case NSUpArrowFunctionKey:
[window makeFirstResponder:[[window firstResponder] previousValidKeyView]];
break;
case NSDownArrowFunctionKey:
[window makeFirstResponder:[[window firstResponder] nextValidKeyView]];
break;
default:
[super keyDown:event];
break;
}
}
在文本字段委托中:
- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)command {
NSWindow *window = [control window];
if (command == @selector(moveUp:)) {
[window makeFirstResponder:[[window firstResponder] previousValidKeyView]];
return YES;
} else if (command == @selector(moveDown:)) {
[window makeFirstResponder:[[window firstResponder] nextValidKeyView]];
return YES;
}
return NO;
}
(对于文本视图委托,有一种类似的方法。)