J'ai placé une image (UIImageView) sur la barre de navigation. Maintenant, je veux détecter l'événement tactile et je veux gérer l'événement. Pouvez-vous me dire comment puis-je faire cela?
Merci.
ios
iphone
uiimageview
uitouch
compte eb
la source
la source
Réponses:
En termes pratiques, ne faites pas cela.
Ajoutez plutôt un bouton avec un style personnalisé (pas de graphiques de bouton sauf si vous spécifiez des images) sur UIImageView. Ensuite, attachez les méthodes que vous souhaitez appeler à cela.
Vous pouvez utiliser cette technique dans de nombreux cas où vous voulez vraiment qu'une zone de l'écran agisse comme un bouton au lieu de jouer avec les éléments tactiles.
la source
A
UIImageView
est dérivé deUIView
qui est dérivé deUIResponder
, il est donc prêt à gérer les événements tactiles. Vous aurez envie de fournir lestouchesBegan
,touchesMoved
et lestouchesEnded
méthodes et déclencher leur si l'utilisateur tape l'image. Si tout ce que vous voulez est un événement tap, il est plus facile d'utiliser simplement un bouton personnalisé avec l'image définie comme image du bouton. Mais si vous voulez un contrôle plus fin sur les taps, les mouvements, etc., c'est la voie à suivre.Vous voudrez également examiner quelques autres choses:
Remplacez
canBecomeFirstResponder
et retournez YES pour indiquer que la vue peut devenir le focus des événements tactiles (la valeur par défaut est NON).Définissez la
userInteractionEnabled
propriété sur OUI. La valeur par défaut pourUIViews
est YES, mais pourUIImageViews
est NON, vous devez donc l'activer explicitement.Si vous souhaitez répondre à des événements multi-touch (par ex. Pincement, zoom, etc.), vous devrez régler
multipleTouchEnabled
sur OUI.la source
userInteractionEnabled
sur OUI sur ma vue parent. Voir stackoverflow.com/questions/5887305/…Pour ajouter un événement tactile à une UIImageView, utilisez ce qui suit dans votre .m
J'espère que cela pourra aider.
la source
Vous pouvez également ajouter un UIGestureRecognizer. Il ne vous oblige pas à ajouter un élément supplémentaire dans votre hiérarchie de vues, mais vous fournit toujours tout le code bien écrit pour gérer les événements tactiles avec une interface assez simple:
la source
J'ai été sur différents sujets ces dernières heures pour essayer de trouver une solution à mon problème, en vain. Je vois que de nombreux développeurs partagent ce problème, et je pense que les gens ici le savent. J'ai plusieurs images à l'intérieur d'un
UIScrollView
, essayant d'obtenir des événements de tap sur eux.je n'obtiens aucun événement d'un
UIImangeView
, mais j'obtiens un événement d'un similaireUILable
avec des paramètres très similaires que je lui définis. sous IOS 5.1.J'ai déjà fait ce qui suit:
UIImageView
.UIImageView
, n'a aidé aucun.En joignant du code ci-dessous, dans ce code, j'initialise à la fois a
UIImageView
etUILabel
, l'étiquette fonctionne bien en termes d'événements de déclenchement. J'ai essayé de garder le code non pertinent. Merci les gars, IlanEt la méthode qui gère l'événement:
Comme dit, le robinet d'étiquette est reçu.
la source
Au lieu de créer une UIImageView tactile puis de la placer sur la barre de navigation, vous devez simplement créer un UIBarButtonItem, que vous créez à partir d'un UIImageView.
Commencez par faire la vue de l'image:
Ensuite, créez l'élément de bouton de barre hors de votre vue d'image:
Ajoutez ensuite l'élément de bouton de barre à votre barre de navigation:
N'oubliez pas que ce code entre dans le contrôleur de vue qui se trouve à l'intérieur d'un tableau de contrôleur de navigation viewcontroller. Donc, fondamentalement, cet "élément de bouton de barre de recherche d'image tactile" n'apparaîtra dans la barre de navigation que lorsque ce contrôleur de vue est affiché. Lorsque vous appuyez sur un autre contrôleur de vue, cet élément du bouton de la barre de navigation disparaît ~
la source
Ce que vous voudrez peut-être faire est de remplacer la
touchesBegan:withEvent:
méthode de laUIView
(ou de la sous-classe) qui contient votre sous-UIImageView
vue.Dans cette méthode, testez si l'une des
UITouch
touches tombe dans les limites de l'UIImageView
instance (disons qu'elle est appeléeimageView
).Autrement dit, l'
CGPoint
élément se[touch locationInView]
croise-t-il avec l'CGRect
élément[imageView bounds]
? Regardez dans la fonctionCGRectContainsPoint
pour exécuter ce test.la source
Vous devez d'abord placer un UIButton, puis soit vous pouvez ajouter une image d'arrière-plan pour ce bouton, soit vous devez placer une UIImageView sur le bouton.
ou
Vous pouvez ajouter le geste de pression à une UIImageView afin d'obtenir l'action de clic lorsque vous appuyez sur UIImageView.
la source
Pour ceux d'entre vous qui recherchent une solution Swift 4 à cette réponse. Vous pouvez utiliser ce qui suit pour détecter un événement tactile sur une UIImageView.
Vous devrez ensuite définir votre sélecteur comme suit:
la source
Ajoutez un geste sur cette vue.Ajoutez une image dans cette vue, cela détecterait également le geste sur l'image.Pourriez-vous essayer avec la méthode déléguée de l'événement tactile, alors dans ce cas, il pourrait également détecter. Merci
la source