NSTableView editColumn: row: withEvent: select: неправильно вкладка?

Если я использую следующий код, чтобы начать редактирование NSTableView:

    [dataTableView editColumn: 0
                          row: 0
                    withEvent: nil
                       select: YES];

Самая первая комбинация строки/столбца в таблице теперь находится в режиме редактирования. Однако, если у меня более одного столбца и я нажимаю кнопку табуляции, редактор не переключается на следующий столбец. Вернее, режим редактирования существует.

Если бы я щелкнул первую строку / столбец, чтобы войти в режим редактирования, когда я нажму вкладку, редактор полей переместится к следующему столбцу (как я и ожидал).

Любые идеи, почему это произойдет? И как я могу заставить мой вызов editColumn:row:withEvent:select: правильно вводить табуляцию?


person Kyle    schedule 09.08.2013    source источник
comment
Эта ссылка может помочь вам решить вашу проблему stackoverflow.com/questions/7536167/   -  person PR Singh    schedule 27.09.2013


Ответы (2)


Встроенное поведение табуляции зависит от выбранной строки, поэтому просто выберите строку вместе с редактированием столбца:

[self.tableView selectRowIndexes:[NSIndexSet indexSetWithIndex:rowIndex] byExtendingSelection:NO];
[self.tableView editColumn:0 row:rowIndex withEvent:nil select:YES];
person robenkleene    schedule 01.03.2014

Как кто-то сказал в этом ответе, Примечания к выпуску AppKit говорят, что переход между ячейками должен работать автоматически. Ваш делегат tableview, вероятно, не реализует этот метод:

- (BOOL)tableView:(NSTableView *)tableView shouldEditTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row

Если вы хотите настроить поведение вкладки, вам нужно сделать ваш контроллер делегатом ваших текстовых представлений, а затем реализовать:

- (BOOL)textView:(NSTextView *)aTextView doCommandBySelector:(SEL)aSelector {
    if (aSelector == @selector(insertTab:)) {
        ..
    } else if (aSelector == @selector(insertBacktab:)) {
        ..
    }
}
person Pierre Houston    schedule 03.10.2013