Как использовать событие "edit" для NSTableView

Внутри NStableViewDelegate я использую окно листа, чтобы начать операцию редактирования следующим образом:

- (BOOL)tableView:(NSTableView *)aTableView shouldEditTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex {

    editEntity = [[contractsAC selectedObjects] objectAtIndex:0];
    needsWriteToArrayController = FALSE;

    [self beginSheet];

    return NO;

}

- (void) beginSheet {

  [NSApp beginSheet:contractEditWindow 
       modalForWindow:mainWindow 
        modalDelegate:nil 
       didEndSelector:NULL 
          contextInfo:nil
     ];

}

Если дважды щелкнуть ячейку таблицы, все будет работать так, как ожидается: появится лист, и я смогу редактировать его входные данные.

Если ячейка таблицы выбрана, и я нажимаю клавишу возврата, то, как правило, происходит соединение: лист появляется, но событие клавиши возврата перенаправляется на лист. В свою очередь, кнопка SAVE листа по умолчанию срабатывает - и заставляет лист исчезнуть. Жаль, нет возможности редактировать;-)

Должен ли я использовать текущее ключевое событие внутри shouldEditTableColumn: метод? Если да, как я мог?

1 ответ

Решение

Вы можете попробовать отсрочить презентацию листа с -performSelector:withObject:afterDelay:, Добавьте приватный метод, который устанавливает и представляет лист, и дает ему задержку 0.0, Это будет запланировано чуть позже в цикле выполнения, что даст возможность нажатия клавиши для распространения.

Другие вопросы по тегам