J’ai placé une image (UIImageView) sur la barre de navigation. Maintenant, je veux détecter l’événement tactile et souhaitez gérer l’événement. Pourriez-vous me faire savoir comment je peux le faire ?
Merci.
J’ai placé une image (UIImageView) sur la barre de navigation. Maintenant, je veux détecter l’événement tactile et souhaitez gérer l’événement. Pourriez-vous me faire savoir comment je peux le faire ?
Merci.
En termes pratiques, ne fais pas ça.
À la place, ajoutez un bouton avec le style Custom (aucun bouton graphique, à moins que vous spécifiiez images) au fil de la UIImageView. Puis quelque méthodes vous voulez appelé à celle d’attachement.
Vous pouvez utiliser cette technique pour beaucoup de cas où vous voulez vraiment certaines zone de l’écran d’agir comme un bouton au lieu de jouer avec les trucs de Touch.
Un UIImageView
est dérivé à partir d'un UIView
qui est dérivée à partir de UIResponder
il est donc prêt à gérer les événements tactiles. Vous aurez envie de fournir à l' touchesBegan
, touchesMoved
, et touchesEnded
méthodes, et ils vont obtenir appelée si l'utilisateur appuie sur l'image. Si tout ce que vous voulez, c'est un robinet d'événement, il est plus facile de simplement utiliser un bouton personnalisé avec l'image comme l'image du bouton. Mais si vous voulez plus fine-grain de contrôle sur les robinets, les déplacements, etc. c'est le chemin à parcourir.
Vous aurez également besoin de regarder un peu plus les choses:
Remplacer canBecomeFirstResponder
et retour OUI pour indiquer que la vue peut faire l'objet d'événement tactile (la valeur par défaut est NO).
Définir l' userInteractionEnabled
de la propriété de OUI. La valeur par défaut de UIViews
est OUI, mais pour l' UIImageViews
NON, vous devez explicitement l'allumer.
Si vous souhaitez répondre à multi-touch à des événements (pincer, zoomer, etc), vous devrez définir multipleTouchEnabled
de OUI.
J'ai été sur différents threads sur le passé quelques heures à essayer de trouver une solution à mon problème, en vain. Je vois que beaucoup de devs part de ce problème, et je pense que les gens savent à ce sujet. J'ai plusieurs images à l'intérieur d'un UIScrollView, en essayant d'obtenir appuyez sur événements.
ne pas obtenir des événements à partir d'un UIImangeView, mais je ne reçois qu'un événement de ce genre de UILable très similaire à des paramètres que je suis en train de. sous IOS 5.1
J'ai déjà fait ce qui suit:
Fixation de certains de code ci-dessous, dans ce code, je l'ai initialiser une UIImageView et UILabel, le label fonctionne bien en termes de déclencher des événements. J'ai essayé de garder hors de propos de code. Merci les gars, Ilan
UIImageView *single_view = [[UIImageView alloc]initWithFrame:CGRectMake(200, 200, 100, 100)];
single_view.image=img;
single_view.layer.zPosition=4;
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGestureCaptured:)];
[single_view addGestureRecognizer:singleTap];
[single_view setMultipleTouchEnabled:YES];
[single_view setUserInteractionEnabled:YES];
[self.myScrollView addSubview:single_view];
self.myScrollView.userInteractionEnabled=YES;
UILabel *testLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
testLabel.backgroundColor=[UIColor redColor];
[self.myScrollView addSubview:testLabel];
[testLabel addGestureRecognizer:singleTap];
[testLabel setMultipleTouchEnabled:YES];
[testLabel setUserInteractionEnabled:YES];
testLabel.layer.zPosition=4;
Et la méthode qui gère l'événement:
- (void)singleTapGestureCaptured:(UITapGestureRecognizer *)gesture
{
UIView *tappedView = [gesture.view hitTest:[gesture locationInView:gesture.view] withEvent:nil];
NSLog(@"Touch event on view: %@",[tappedView class]);
}
Comme l'a dit, l'étiquette tap est reçu
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.