我找到的解决方案是在选择单元格后模拟返回键的按键,该键进入单元格的编辑模式。选择正确的项目留给读者练习。坦率地说,如果您遇到上述问题,您可能之前已经选择了该项目。
我只在我想编辑第一列的情况下模拟按键,尽管它可能也适用于其他列,但对于他们来说,我更喜欢使用真正的 API,即editItemAtIndexPath:withEvent:select:
.
所以首先我检查 indexPath 的长度,看它是否等于 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>
for GetCurrentEventTime()
。我花了一段时间才找到这个。