Как использовать событие "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
, Это будет запланировано чуть позже в цикле выполнения, что даст возможность нажатия клавиши для распространения.