Question

À l'intérieur d'un nstableViewDelegate, j'utilise une fenêtre de feuille pour commencer une opération d'édition comme ceci:

- (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 je double-cliquez sur une cellule de table, les choses se comportent comme prévu: la feuille apparaît et je suis en mesure de modifier ses entrées.

Si une cellule de table est sélectionnée et que j'appuie sur la touche de retour, les choses ont tendance à être câblées: la feuille apparaît, mais l'événement de la clé de retour est transmis à la feuille. À son tour, le bouton Enregistrer par défaut de la feuille est tiré - et fait disparaître la feuille. Dommage, aucune chance de modifier ;-)

Dois-je consommer l'événement clé actuel à l'intérieur de la méthode fundittableColumn: Méthode? Si oui, comment pourrais-je?

Était-ce utile?

La solution

Vous pouvez essayer de reporter la présentation des feuilles avec -performSelector:withObject:afterDelay:. Ajouter une méthode privée qui configure et présente la feuille, et lui donner un retard de 0.0. Il sera programmé légèrement plus tard sur la boucle de course, donnant à la pression de la touche une chance de se propager.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top