Имитация Tab и Shift-Tab с помощью клавиш со стрелками в NSTableView

Я хочу имитировать вкладку и сдвиг-вкладку со стрелкой вправо и стрелкой влево. Я предположил, что мне нужно создать подкласс NSTableview и переопределить код нажатия клавиши, но я не знаю, как сообщить табличному представлению, которое должно редактировать ячейку в столбце и строке. вот как далеко я захожу

-(void)keyDown:(NSEvent*)event{
    [super keyDown:event];
    NSLog(@"%hi", [event keyCode]);

        if ([event keyCode] == 48 && ([event modifierFlags] &
                                  NSShiftKeyMask)){
        [[self window] selectKeyViewPrecedingView:self];
    }

    if ([event keyCode] == 51){
        [[self window] selectKeyViewPrecedingView:self];

    }
    if ([event keyCode] == 124){
        if ([self selectedColumn] < [self numberOfColumns]-1) {

            [self performClickOnCellAtColumn:[self selectedColumn]+1 row:[self selectedRow]];
        }


    }
    if ([event keyCode] == 124){
        if ([self selectedColumn] > 0) {
            [self performClickOnCellAtColumn:[self selectedColumn]-1 row:[self selectedRow]];
        }


    }

}

person Javier Beltrán    schedule 24.06.2011    source источник


Ответы (2)


Лучше, чем keydown, вы можете переопределить делегата NSControl из NSTableView:

- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)command

Взгляните на ответы из этого поста: клавиши со стрелками с NSTableView

person quarac    schedule 03.02.2012

-[NSTableView editColumn:row:withEvent:select:]

person jscs    schedule 24.06.2011
comment
С этим я редактирую поле, но я все еще не могу перейти к следующей или предыдущей ячейке - person Javier Beltrán; 25.06.2011
comment
Я не понимаю, что ты пытаешься сделать. - person jscs; 25.06.2011
comment
Я хочу перемещаться между ячейками, используя клавиши со стрелками вправо и влево, такие как вкладка и сдвиг-вкладка, поэтому, когда я нажимаю вправо, я должен перейти к следующей ячейке и отредактировать ее. - person Javier Beltrán; 29.06.2011
comment
Что вы имеете в виду, перемещаться между ячейками? Если вы используете этот метод, он выберет и откроет для редактирования любую указанную вами ячейку. Используйте ту же логику, что и для выбора следующей строки или столбца. - person jscs; 29.06.2011