2011-02-15 2 views
0

Внутри NStableViewDelegate я использую окно листа, чтобы начать операцию редактирования вроде этого:Как потреблять «изменить» событие для NSTableView

- (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:? Если да, как я могу?

ответ

0

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

+0

Thx, Jonathan! О, я задал тривиальный вопрос ;-) – SteAp

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