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
  • 19,212
  • 9
  • 65
  • 112
SwiftBeginner
  • 45
  • 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,201
  • 21
  • 24