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

}

表のセルをダブルクリックすると、期待どおりに動作します。シートが表示され、その入力を編集できます。

表のセルが選択されているときに Return キーを押すと、物事が配線される傾向があります。シートは表示されますが、Return キー イベントはシートに転送されます。次に、シートのデフォルトの SAVE ボタンが起動され、シートが消えます。残念ながら、編集する機会はありません;-)

shouldEditTableColumn: メソッド内で現在のキー イベントを使用する必要がありますか? はいの場合、どうすればよいですか?

4

1 に答える 1

0

You could try deferring sheet presentation with -performSelector:withObject:afterDelay:. Add a private method that sets up and presents the sheet, and give it a delay of 0.0. It'll be scheduled slightly later on the run loop, giving the keypress a chance to propagate.

于 2011-02-16T00:04:04.820 に答える