aatalyk aatalyk - 1 month ago 39
iOS Question

Unrecognized selector sent to instance Swift 3

I want to implement

TapGestureRecognizer
with the
selector
, below is the code where I added tapGestureRecognizer to my
imageView


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


Here is the action method

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

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


Compiler keeps saying


[UITapGestureRecognizer tag]: unrecognized selector sent to instance 0x6080001a7700'

Answer

The problem is with your method declaration and with assigning tag to the object of UIGestureRecognizer. Change your method declaration like this.

func assignImage(_ sender: UITapGestureRecognizer)

Or

func assignImage(_ sender: UIGestureRecognizer)

Edit: To access imageView object with UITapGestureRecognizer.

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

    }
}

Note: You need to set tag with you imageView not with you UITapGestureRecognizer

Comments