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

}
.

如果我双击表格单元格,事情就像预期一样:表格出现,我能够编辑其输入。

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

我应该在panceDitableColumn:方法中消耗当前的关键事件吗?如果是,我怎么能呢?

有帮助吗?

解决方案

您可以尝试使用-performSelector:withObject:afterDelay:推迟表演示文稿。添加一个私有方法,该方法设置并显示工作表,并为其延迟生成的延迟。它将稍后在运行循环上略微安排,使按键成为传播的机会。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top