0

在 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
     ];

}

如果我双击表格单元格,事情会按预期运行:工作表出现,我可以编辑其输入。

如果选择了一个表格单元格并且我按下了返回键,事情往往是连线的:工作表出现,但返回键事件被转发到工作表。反过来,工作表的默认保存按钮被触发 - 并使工作表消失。太糟糕了,没有机会编辑;-)

我应该使用 shouldEditTableColumn: 方法中的当前键事件吗?如果是,我该怎么办?

4

1 回答 1

0

您可以尝试使用-performSelector:withObject:afterDelay:. 添加一个设置和呈现工作表的私有方法,并给它一个延迟0.0. 它将在运行循环中稍晚安排,让按键有机会传播。

于 2011-02-16T00:04:04.820 回答