2010-08-03 4 views
0

탭과 Shift-Tab 키를 사용하여 컨트롤 사이를 행복하게 볼 수있는 창이 있습니다. 그러나, 나는 또한 위아래 화살표 키 (이 경우)를 사용하여 컨트롤 사이를 이동할 수 있기를 원합니다. 어떻게이 일을 성취 할 수 있습니까?탭 키가없는 컨트롤 사이의 "Tab"

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

그리고 텍스트 필드 대리자 :

텍스트가 아닌 컨트롤
+0

저는 이것이 위의 화살표와 아래쪽 화살표가 포커스 된 뷰 내에서 무언가를 수행 할 것으로 합리적으로 기대할 수있는 텍스트 필드와 같지 않기를 바랍니다. –

+0

피터가 아닌 두려움! 수직으로 배열 된 (단지) 버튼 패널입니다. –

답변

1

, 당신은 리스폰 더 체인이 어딘가에 같은 (예를 들어, 당신의 NSWindowController)에 의해 얻을 수 있어야

- (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

2

현재보기의 다음/이전 키보기를 첫 번째 응답자에게 표시하도록 지시합니다.