Cliquez sur Événement sur UIImageView par programme dans iOS


95

J'affiche une image du code voici le code

UIImageView *preArrowImage =[[UIImageView alloc]init ];
preArrowImage.image =[UIImage imageNamed:@"arrowprev.png"];
preArrowImage.frame = CGRectMake(20, 60, 10, 30);
[self.view addSubview:preArrowImage];

Je souhaite gérer l'événement tactile sur la preArrowImage par programmation.


Cela peut être d'une certaine utilité stackoverflow.com/questions/9008975/…
Gaz_Edge

Réponses:


250

Objectif c

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapDetected)];
singleTap.numberOfTapsRequired = 1;
[preArrowImage setUserInteractionEnabled:YES];
[preArrowImage addGestureRecognizer:singleTap];

-(void)tapDetected{
    NSLog(@"single Tap on imageview");
  }

SWIFT 4.2 / 5

let preArrowImage : UIImageView // also give it frame
let singleTap = UITapGestureRecognizer(target: self, action: #selector(tapDetected))
preArrowImage.isUserInteractionEnabled = true
preArrowImage.addGestureRecognizer(singleTap)

//Action
@objc func tapDetected() {
    print("Imageview Clicked")
}

pour Swift 2, vous devez remplacer Selector("tapDetected")par:"tapDetected:"
datayeah

Par défaut singleTap.numberOfTapsRequired = 1, Happy Coding Thanks
Ravi

'let singleTap = UITapGestureRecognizer (target: self, action: #selector (NavigationViewController.tapDetectedImage))'
Alex22

18

Ajoutez simplement un UITapGesturesur l'image mais n'oubliez pas de rendre son UserInteraction activée .

    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self 
    action:@selector(singleTapGestureCaptured:)];
    [preArrowImage addGestureRecognizer:singleTap];
    [preArrowImage setMultipleTouchEnabled:YES];
    [preArrowImage setUserInteractionEnabled:YES];

6

Maintenant dans Swift!

let singleTap = UITapGestureRecognizer(target: self, action: Selector("tapDetected"))
singleTap.numberOfTapsRequired = 1

preArrowImage.userInteractionEnabled = true
preArrowImage.addGestureRecognizer(singleTap)


//Action
func tapDetected() {
    println("Single Tap on imageview")
}

4

Swift 3

Sur UIImageView, activez UserInterAction

 override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
        super.touchesEnded(touches, with: event)

        if let touch = touches.first {
            if touch.view == self.imgVwPostPreview { //image View property

                //Do your actions
                //self.delegate?.didClickOnCellImageView(indexPath: self.cellIndexPath!)
            }
        }
    }

3

Utilisation du storyboard avec vue dans le contrôleur de vue.
la vue peut être ImageView, UIView, UILabel, TextField ou un autre contrôleur


Après avoir sélectionné l'un des outils de reconnaissance de gestes, faites-le glisser sur votre manette.
Maintenant, il s'affichera dans "Aperçu du document" et en-tête du contrôleur de vue xib.

Icône de geste dans la ligne de sortie du document et xib
Faites glisser le geste vers UILable
Faites glisser le geste vers UILable


Créer manuellement la méthode (IBAction) dans le fichier d'en-tête


créer la méthode IBAction dans le fichier d'en-tête
Maintenant, faites-la glisser du gestionnaire vers l'icône de geste dans xib
Liez-le avec l'icône de geste


0

Si votre UIImageView est un IBOutlet que vous obtenez à partir d'un Storyboard ou d'une Nib, vous pouvez ajouter un UIGestureRecognizer à la vue d'image, activer l'interaction de l'utilisateur et connecter une IBAction au module de reconnaissance de mouvement.

Pour plus d'informations, consultez ma réponse à cette question: Comment rendre une UIImageView sur le storyboard cliquable (swift)


0

Voici une autre option: tricher.

Je veux dire, pense latéralement.

Configurez votre UIImage comme vous le souhaitez, rognée, ajustée, peu importe.

Superposez-le avec un UIView (dimensions égales, position, etc.)

Définissez l'arrière-plan sur clearcolour et la classe sur UIControl.

Pointez l'événement retouche à l'intérieur de votre gestionnaire, et le tour est joué.


Encore plus simple qu'un UIView: utilisez un bouton et supprimez le texte. ;)
Néph

0

Xamarin.iOS

UIImageView preArrowImage; // also give it frame
var singleTap = new UITapGestureRecognizer(TapDetected);
singleTap.ShouldReceiveTouch -= TapGesture_ShouldReceiveTouch;
singleTap.ShouldReceiveTouch += TapGesture_ShouldReceiveTouch;
preArrowImage.UserInteractionEnabled = true;
preArrowImage.AddGestureRecognizer(singleTap)

bool TapGesture_ShouldReceiveTouch(UIGestureRecognizer recognizer, UITouch touch)
{
    return true;
}

void TapDetected(UITapGestureRecognizer tapGestureRecognizer)
{
    print("Imageview Clicked")
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.