J'essaie d'attribuer un UIImageView
à une action lorsque l'utilisateur la touche.
Je sais comment créer une action pour a UIButton
, mais comment pourrais-je imiter le même comportement de a UIButton
, mais en utilisant a UIImageView
?
ios
swift
uiimageview
user3706773
la source
la source
@objc
modificateur à la fonction.Vous devez ajouter un outil de reconnaissance de gestes (pour appuyer, utiliser UITapGestureRecognizer , pour appuyer et maintenir, utiliser UILongPressGestureRecognizer ) à votre
UIImageView
.Et implémentez la méthode de sélection comme:
la source
Vous pouvez ajouter un
UITapGestureRecognizer
à l'imageView, faites-en simplement glisser un dans votre Storyboard / xib, faites glisser tout en maintenant la touche Ctrl enfoncée de l'imageView vers le gestureRecognizer et en maintenant la touche Ctrl enfoncée depuis le gestureRecognizer vers le fichier Swift pour créer unIBAction
.Vous devrez également activer les interactions des utilisateurs sur le
UIImageView
, comme indiqué dans cette image:la source
UIImageView
ne répond pas aux touches par défaut. Vous devez également activer les interactions des utilisateurs.Pour swift 2.0 et supérieur, procédez comme suit
la source
Code Swift4
Essayez ces nouvelles méthodes d'extension:
Maintenant, chaque fois que nous voulons ajouter un
UITapGestureRecognizer
à uneUIView
ou uneUIView
sous - classe commeUIImageView
, nous pouvons le faire sans créer de fonctions associées pour les sélecteurs!Usage:
la source
Vous pouvez en fait simplement définir l'image du
UIButton
à ce que vous mettriez normalement dans un fichierUIImageView
. Par exemple, où vous feriez:Vous pouvez à la place utiliser:
Alors, voici à quoi pourrait ressembler votre code:
L'avantage d'utiliser cette méthode est que si vous devez charger l'image à partir d'une base de données, vous pouvez définir le titre du bouton avant de définir l'image:
Pour informer vos utilisateurs que vous chargez l'image
la source
Besoin d'ajouter un paresseux pour que TapGestureRecognizer s'enregistre
puisque le 'self' dans UITapGestureRecognizer (cible: self ...) sera nul si ce n'est pas une var paresseuse. Même si vous définissez isUserInteractionEnable = true, il ne s'enregistrera pas sans lazy var.
la source
Vous pouvez mettre un
UIButton
avec un fond transparent sur le dessus deUIImageView
, et écouter un appui sur le bouton avant de charger l'imagela source
Code Swift 4
Étape 1 Dans ViewdidLoad ()
Étape 2 Ajouter la fonction suivante
Il est testé et fonctionne correctement
la source
Je suggère de placer le bouton invisible (opacité = 0) sur votre imageview, puis de gérer l'interaction sur le bouton.
la source