Filtrer le double clic dans une NSTableView
UniX
Membre
Salut.
J'ai implémenté dans une NSTableView une méthode doubleClic.
Le problème, c'est qu'elle s'exécute même lorsque je double clique sur mes en-têtes de colonnes ....
Y a t'il un moyen pour filtrer ça ?
J'ai implémenté dans une NSTableView une méthode doubleClic.
Le problème, c'est qu'elle s'exécute même lorsque je double clique sur mes en-têtes de colonnes ....
Y a t'il un moyen pour filtrer ça ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Voici ma parade :
Dans ton interfaçage, tu déclares une variable bool, prenons par exemple ici :
[tt]
BOOL tableViewHeaderColumnClique;
[/tt]
Ensuite, dans l'implémentation :
[tt]
-(void)awakeFromNib
{
/*...*/
tableViewHeaderColumnClique=NO;
/*...*/
}
[/tt]
Dans la méthode qui est appelée par le double-clique, tu mets le code suivant au tout début :
[tt]
-(void)doubleCliqueTableView
{
if (tableViewHeaderColumnClique==YES)
{
return;
}
  Â
   /*...*/
}
[/tt]
Et puis, il faut implémenter la méthode delegate (si ce n'est déjà fait) "-(void)tableView:(NSTableView *)tableView mouseDownInHeaderOfTableColumn:(NSTableColumn *)tableColumn" avec le code suivant. La tempo est là pour attendre que la méthode appelée pour le double-clique ait bien été appelée.
[tt]
-(void)tableView:(NSTableView *)tableView mouseDownInHeaderOfTableColumn:(NSTableColumn *)tableColumn
{
tableViewHeaderColumnClique=YES;
   /*...*/
[self performSelector:@selector(setTableViewHeaderColumnCliqueNoState) withObject:nil afterDelay:0.1];
}
-(void)setTableViewHeaderColumnCliqueNoState
{
tableViewHeaderColumnClique=NO;
}
[/tt]
Cette méthode, bien plus simple en effet, ne fonctionne que si la sélection des colonnes est autorisée dans les attributs de la tableview, ce qui n'est pas le cas pour moi.
En revanche ça roule avec le code de Eddy58.
Les 2 solutions doivent être bonnes, suivant la configuration de la NSTableView.
Merci à vous 2
Mais lors d'un double-clic sur un en-tête de colonne, clickedRow=-1 ?
Ce qui est également très logiqueÂ