2010-08-03 60 views
0

我有一个窗口,它使用标签和换档标签键在其控件之间愉快地标签。不过,我也希望能够使用向上和向下箭头键(在这种情况下)在控件之间移动。这怎么能实现?没有标签键的控件之间的“标签”

+0

我希望这些不是像文本字段,我可以合理地期望上下箭头在聚焦的视图内做些事情。 – 2010-08-03 23:27:14

+0

不要怕彼得!这是一组垂直排列的(仅)按钮。 – 2010-08-04 00:08:11

回答

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;   
} 

(对于文本查看代表有一个类似的方法。)

+0

糟糕!感谢编辑...复制/粘贴失败。 – Wevah 2010-08-04 13:58:19

2

告诉窗口使当前视图的下一个/上一个键查看第一个响应者。