2010-08-03 2 views
0

У меня есть окно, которое удачно перемещает между элементами управления с помощью вкладок и клавиш shift-tab. Тем не менее, я также хочу иметь возможность перемещаться между элементами управления с помощью клавиш со стрелками вверх и вниз (в данном случае). Как это можно достичь?«Вкладка» между элементами управления без клавиши табуляции

+0

Надеюсь, это не что-то вроде текстовых полей, где я мог бы разумно ожидать стрелки вверх и вниз, чтобы что-то сделать в сфокусированном виде. –

+0

Не бойся Петра! Это панель кнопок (только), расположенных вертикально. –

ответ

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

2

Расскажите окно, чтобы сделать следующий/предыдущий вид ключ текущего режима просмотра первым ответчиком.

Смежные вопросы