Решение, которое я нашел, состоит в том, чтобы имитировать нажатие клавиши возврата, которая переходит в режим редактирования для ячейки после выбора ячейки. Выбор правильного элемента - это упражнение для чтения. Честно говоря, если вы столкнулись с проблемой выше, вы, вероятно, уже выбрали элемент раньше.
Я только имитирую нажатие клавиши, если я хочу отредактировать первый столбец, хотя он, вероятно, будет работать и в других столбцах, но для них я предпочитаю использовать настоящий API, то есть editItemAtIndexPath:withEvent:select:
.
Итак, сначала проверяю длину индекса, чтобы увидеть, равно ли оно 1. Если это так, следующий код имитирует нажатие и отпирание клавиши возврата. self
является NSViewController
, так что вам может понадобиться для корректировки на основе, где этот код вызывается из:
NSInteger windowNumber = [[self.view window] windowNumber];
NSEvent *keyDownReturn = [NSEvent keyEventWithType:NSKeyDown location:NSZeroPoint modifierFlags:0 timestamp:GetCurrentEventTime() windowNumber:windowNumber context:[NSGraphicsContext currentContext] characters:@"\r" charactersIgnoringModifiers:@"\r" isARepeat:NO keyCode:36];
NSEvent *keyUpReturn = [NSEvent keyEventWithType:NSKeyUp location:NSZeroPoint modifierFlags:0 timestamp:GetCurrentEventTime() windowNumber:windowNumber context:[NSGraphicsContext currentContext] characters:@"\r" charactersIgnoringModifiers:@"\r" isARepeat:NO keyCode:36];
[NSApp sendEvent:keyDownReturn];
[NSApp sendEvent:keyUpReturn];
Не забудьте #import <Carbon/Carbon.h>
для GetCurrentEventTime()
. Понадобился немного времени, чтобы найти это.