2010-08-03 61 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

告訴窗口使當前視圖的下一個/上一個鍵查看第一個響應者。