Pregunta

Dentro de NStableViewDelegate, uso una ventana de hoja para comenzar una operación de edición como esta:

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

}

Si hago doble clic en una celda de la tabla, todo se comporta como se esperaba:Aparece la hoja y puedo editar sus entradas.

Si se selecciona una celda de la tabla y presiono la tecla de retorno, las cosas tienden a estar conectadas:La hoja aparece, pero el evento de la clave de retorno se reenvía a la hoja.A su vez, el botón GUARDAR predeterminado de la hoja se activa y hace que la hoja desaparezca.Lástima, no hay posibilidad de editar ;-)

¿Debo consumir el evento clave actual dentro de shouldEditTableColumn:¿método?Si es así, ¿cómo podría?

¿Fue útil?

Solución

Podrías intentar aplazar la presentación de la hoja con -performSelector:withObject:afterDelay:.Agregue un método privado que configure y presente la hoja, y déle un retraso de 0.0.Se programará un poco más tarde en el ciclo de ejecución, lo que le dará a la pulsación de tecla la oportunidad de propagarse.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top