1

This may seem really simple, but I've been tearing my hair out for a while now wondering why this isn't working. I'm trying to change the image when tapped on, but it doesn't seem to recognise the tap at all. I have enabled user interaction both on the storyboard and programatically, so am a little lost.

override func viewDidLoad() {
    super.viewDidLoad()

    tL.isUserInteractionEnabled = true

    x = UIImage(named: "Cross.jpg")
    reset = UIImage(named: "white.png")

    //Tap Gesture ------------------------------------------------------------

    let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(Logic))
    gestureRecognizer.numberOfTapsRequired = 1

    tL.addGestureRecognizer(gestureRecognizer)
}

func Logic(_ sender: UITapGestureRecognizer) {
    let tappedView = sender.view as! UIImageView
    tappedView.image = x
    print("Image Tapped")
}
shallowThought
  • 18,342
  • 7
  • 61
  • 106
SwiftBeginner
  • 35
  • 1
  • 8

1 Answers1

3

fun Logic needs 1 argument, you should provide as such in your selector. Change from

let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(Logic))

to

let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(yourClassName.Logic(_ : )))
Ohmy
  • 2,141
  • 19
  • 24