Search code examples
iosswiftuitapgesturerecognizer

Image view not recognizing my tap gesture


I'm trying to present a UIImagePickerController from an image and it's not working. I enable user interaction, but i still can't seem to get it working.

let cameraIconImageView: UIImageView = {
    let image = UIImageView()
    image.image = UIImage(named: "camera_icon")?.withRenderingMode(.alwaysTemplate)
    image.tintColor = UIColor(r: 255, g: 122, b: 124, a: 1 )
    image.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleSelectProfileImage)))
    image.layer.borderWidth = 2
    image.layer.borderColor = UIColor(r: 255, g: 122, b: 124, a: 1 ).cgColor
    image.layer.cornerRadius = 20
    image.isUserInteractionEnabled = true
    image.clipsToBounds = true
    image.translatesAutoresizingMaskIntoConstraints = false
    return image
}()

@objc func handleSelectProfileImage() {
    let picker = UIImagePickerController()
    present(picker, animated: true, completion: nil)
    print(123)

    picker.delegate = self
    picker.allowsEditing = true

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

Solution

  • lazy var cameraIconImageView: UIImageView = {
    
    let image = UIImageView()
    image.image = UIImage(named: "camera_icon")?.withRenderingMode(.alwaysTemplate)
    image.tintColor = UIColor(r: 255, g: 122, b: 124, a: 1 )
    image.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleSelectProfileImage)))
    image.layer.borderWidth = 2
    image.layer.borderColor = UIColor(r: 255, g: 122, b: 124, a: 1 ).cgColor
    image.layer.cornerRadius = 20
    image.isUserInteractionEnabled = true
    image.clipsToBounds = true
    image.translatesAutoresizingMaskIntoConstraints = false
    return image
    
    }()
    

    Use lazy in Imageview initialization.