3

Je veux mettre en œuvre TapGestureRecognizer avec le selector, ci-dessous est le code où j'ai ajouté tapGestureRecognizer à mon imageViewsélecteur Unrecognized envoyé à l'instance Swift 3

let tapFirstGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(assignImage(_:))) 
firstImageView.isUserInteractionEnabled = true 
firstImageView.tag = 1 
firstImageView.addGestureRecognizer(tapFirstGestureRecognizer) 

Voici la méthode d'action

func assignImage(_ sender: UIImageView){ 
    imagePicker.allowsEditing = false 
    imagePicker.sourceType = .photoLibrary 
    imageViewTag = sender.tag 

    present(imagePicker, animated: true, completion: nil) 
} 

compilateur ne cesse de dire

[balise UITapGestureRecognizer]: unrecog nized sélecteur envoyé à l'instance 0x6080001a7700'

Répondre

6

Le problème est avec votre déclaration de méthode et l'attribution tag à l'objet de UIGestureRecognizer. Changez votre déclaration de méthode comme ceci.

func assignImage(_ sender: UITapGestureRecognizer) 

Ou

func assignImage(_ sender: UIGestureRecognizer) 

Edit: Pour accéder à objet imageView avec UITapGestureRecognizer.

func assignImage(_ sender: UITapGestureRecognizer) { 
    if let imageView = sender.view as? UIImageView { 

    } 
} 

Note: Vous devez définir tag avec vous imageView pas avec vous UITapGestureRecognizer

+0

Je veux passer imageView comme paramètre pour obtenir son étiquette – aatalyk

+0

Ce pas possible, mais vous pouvez accéder à ce 'imageview 'object using' sender.view sous? UIImageView'. –

+0

pouvez-vous afficher dans le code? – aatalyk