47 votes

UITapGestureRecognizer sélecteur, l'expéditeur est le geste, pas l'objet d'interface

J'ai une série de imageviews que je m'identifie à l'aide de leur étiquette. J'ai ajouté un simple toucher d'un geste sur les images.

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(selectImage:)];
[tableGridImage addGestureRecognizer:singleTap];
tableGridImage.userInteractionEnabled = YES;
[singleTap release];

Cela permet d'appeler le selectImage sélecteur ok, mais passe le geste de l'expéditeur. J'ai besoin de l'imageview que l'expéditeur afin que je puisse obtenir la balise.

Des idées sur comment je peux obtenir le imageview et c'est la balise?

54voto

dysan819 Points 436

J'ai compris comment faire le tag, qui était la partie la plus importante de la question pour moi. Depuis le geste est l'expéditeur, j'ai compris la le point de vue, il est attaché est envoyé avec elle:

[(UIGestureRecognizer *)sender view].tag

Je suis toujours curieux de savoir si quelqu'un peut me dire comment envoyer un argument par l'intermédiaire d'un UITapGestureRecognizer sélecteur.

27voto

Samidjo Points 905

Le seul argument que vous pouvez envoyer par UITapGestureRecognizer sélecteur est la UITapGestureRecognizer comme suit:

Assurez-vous de mettre ":" après le nom du sélecteur comme vous l'avez déjà fait :

UITapGestureRecognizer *singleTap = 
[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(selectImage:)];

Puis ajouter un paramètre à selectImage de sorte que vous pouvez récupérer l'Affichage comme suit:

-(void) selectImage:(UITapGestureRecognizer *)gestureRecognizer{

    //Get the View
    UIImageView *tableGridImage = (UIImageView*)gestureRecognizer.view;
}

2voto

Norman H Points 1298

Si vous avez besoin des fonctionnalités distinctes pour le gestionnaire, vous devriez vérifier les BlocksKit projet et ce fichier en particulier. Le projet est un CocoaPods projet de sorte que vous pouvez l'installer facilement dans votre chaîne d'outils.

Un exemple de la première référencé fichier de code:

UITapGestureRecognizer *singleTap = [UITapGestureRecognizer recognizerWithHandler:^(id sender) {
     NSLog(@"Single tap.");
 } delay:0.18];
 [self addGestureRecognizer:singleTap];

Cela pourrait effectivement vous permettre de configurer un geste de reconnaissance facilement pour chaque image.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X