Détecter Tapez sur UIImageView dans UITableViewCell
J'ai un custom complexe UITableViewCell où il y a beaucoup de points de vue. J'ai une UIImageView à l'intérieur de ce qui est visible pour une condition spécifique. Quand il est visible ,
- Je dois effectuer une Action lorsque l'utilisateur touche que UIImageView.
- Je sais que j'ai de déclencher un sélecteur pour cette tâche. Mais je veux aussi passer une valeur à cette Méthode (Voir -(void)onTapContactAdd :(id) sender : (NSString*) uid ci-dessous) qui sera appelé comme une Action de taper sur mon UIImageView dans UITableViewCell je suis en train de parler. C'est parce que , l'utilisation de la valeur passée , la méthode appelée sera de faire son travail.
Voici ce que j'ai essayé jusqu'à présent.
cell.AddContactImage.hidden = NO ;
cell.imageView.userInteractionEnabled = YES;
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onTapContactAdd::)];
[tap setNumberOfTouchesRequired:1];
[tap setNumberOfTapsRequired:1];
[tap setDelegate:self];
[cell.AddContactImage addGestureRecognizer:tap];
-(void)onTapContactAdd :(id) sender : (NSString*) uid
{
NSLog(@"Tapped");
//Do something with uid from parameter
}
Cette méthode n'est pas appelée lorsque je tape. J'ai ajouté dans mon fichier d'en-tête.
Merci pour votre aide à l'avance.
source d'informationauteur ayon
Vous devez vous connecter pour publier un commentaire.
Peut-être pas la solution idéale, mais ajouter des étiquettes à chaque UIImageViews. Alors un NSArray avec l'uid de l'correspondant aux valeurs de la balise
Donc quelque part dans votre code, vérifiez le tableau
Puis lors de la configuration de la tableview cellules de définir la balise à la ligne #
Ensuite, dans la méthode qui est appelée, vous pouvez obtenir la balise comme ceci
Ajouter le geste de reconnaissance de la cellule elle-même.
Puis dans l'action sélecteur, procédez comme suit pour savoir quel point de vue a été tapé:
Un geste de reconnaissance de transmettre uniquement un argument dans une action sélecteur: lui-même. Si u besoin de passer la valeur de l'uid seul.Comme cette.
Deviner ce qui se trouve dans l'cellForRowAtIndexPath: méthode
Donc, ici, lorsque vous appuyez sur l'image visible dans la cellule personnalisé,le onTapContactAdd: méthode est appelée avec la valeur uid(paramètre), et nous avons maintenant la cellule.AddContactImage également accessibles, ce qui je crois est pourquoi vous avez été d'essayer de passer aussi avec les paramètres .
Espérons que cela Aide!!!
vous pouvez utiliser ALActionBlocks pour ajouter le geste à UIImageView et gérer l'action dans le bloc
Installer
Un autre, avec la
indexPath
si c'est ok pour vous de gérer le robinet de la source de données:Vous pouvez rendre le code plus court, si vous avez un seul
tableView
.Ici, Nous avons customtableviewcell à la fois .h et .m les fichiers avec deux images dans la cellule. Et HomeController, qui ont tableview pour accéder à cette cellule. C'est de détecter le Robinet sur le UIImage comme décrit.