J'ai une NSTextFieldCell dans une colonne d'une NSTableView basée sur une cellule. Cette cellule devrait gérer les clics. Cela fonctionne bien lorsqu'aucune touche de modification n'est enfoncée. Si je maintiens les touches Maj ou Commande, la vue table avale l'événement mouseDown dans le but de gérer la sélection des lignes.Suivi de la souris avec des touches de modification dans la cellule de la table
Existe-t-il un moyen de désactiver complètement la sélection de ligne dans NSTableView?
Existe-t-il un moyen de faire passer tous les événements par NSTableView?
Ma sous-classe de cellule est dérivée de LinkTextFieldCell dans l'exemple de code TableViewLinks. Il met en œuvre:
- (BOOL)trackMouse:(NSEvent *)theEvent inRect:(NSRect)cellFrame ofView:(NSView *)controlView untilMouseUp:(BOOL)flag
Depuis que je ne veux pas la sélection de la ligne, mon délégué vue de tableau met en œuvre:
- (BOOL)tableView:(NSTableView *)tableView shouldSelectRow:(NSInteger)rowIndex
{
return NO;
}
- (BOOL)tableView:(NSTableView *)tableView shouldTrackCell:(NSCell *)cell forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
return YES;
}
Mes méthodes déléguées sont appelées à partir - [NSTableView mouseDown:]. Le code de suivi de la souris est appelé lorsque aucune touche de modification n'est enfoncée.
Existe-t-il une meilleure façon de résoudre ce problème que de sous-classer NSTableView pour remplacer - [NSTableView mouseDown:]?
Pouvez-vous avoir la table refusesFirstResponder? C'est tout ce que je peux penser, mais je ne suis pas sûr que ça ne casserait pas autre chose. – stevesliva
Pour une raison que j'ignore, j'ai déjà accepté le retour NON-Répondeur NON. Ça ne fait aucune différence. –