Cliquez sur événement sur UIImageView par programmation dans ios

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 veux gérer l'événement touch sur le preArrowImage de façon programmatique.

78
demandé sur Sumit Patel 2013-06-15 09:24:55

7 réponses

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

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")
}
214
répondu Vivek Sehrawat 2017-11-28 07:35:49

il suffit D'ajouter un UITapGesture sur l'image mais n'oubliez pas de faire son UserInteraction activé .

    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self 
    action:@selector(singleTapGestureCaptured:)];
    [preArrowImage addGestureRecognizer:singleTap];
    [preArrowImage setMultipleTouchEnabled:YES];
    [preArrowImage setUserInteractionEnabled:YES];
17
répondu IronManGill 2013-06-15 05:32:06

maintenant à 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
répondu Sakiboy 2015-05-21 22:55:22

utilisant le story board avec vue en vue contrôleur.

view may be ImageView, UIView, UILabel, TextField or other controller



Après avoir sélectionné l'un des reconnaisseurs de gestes, faites-le glisser vers votre contrôleur.

Maintenant, il s'affichera dans" Document outline " et en-tête du contrôleur de vue xib.

Gesture icon in document out line and xib

Drag geste à UILable

Drag gesture to UILable



Manually create (IBAction)method in header file



créer la méthode IBAction dans le fichier d'en-tête

faites-le glisser du manipulateur à l'icône du geste en xib

Link it with gesture icon

2
répondu Subhash 2015-05-20 05:24:25

Swift 3

Sur UIImageView permettre 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!)
            }
        }
    }
2
répondu Jaleel Nazir 2017-07-04 11:54:12

si votre UIImageView est un IBOutlet que vous obtenez à partir d'un Storyboard ou D'un Nib, vous pouvez ajouter un UIGestureRecognizer à la vue d'image, activer l'interaction utilisateur et connecter un IBAction au reconnaisseur de geste.

pour plus d'informations, consultez ma réponse à cette question: Comment faire un UIImageView sur le storyboard cliquable (swift)

0
répondu xxtesaxx 2017-05-23 12:03:04

Voici une autre option: tricher.

je veux dire, penser latéralement.

mettez en place votre UIImage comme vous le voulez, recadré, en forme, peu importe.

superposer ceci avec un uivi (dimensions égales, position etc.)

définit l'arrière-plan à clearcolour, et la classe à UIControl.

pointez la touche up inside event à votre handler, et voilà.

0
répondu Raki 2017-05-24 14:48:41