Search code examples
iosarraysswiftuiimageviewuitapgesturerecognizer

How do I hide image on touch with an array of imageviews?


I have an array of image views.

var imageViewArray = [UIImageView(image: UIImage())]

I use a for loop to fill this array with images from urls. I want to make it so that when I touch one of these images it becomes hidden or alpha: 0. I tried this:

let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(StoryVC.imageTapped))
newImage.userInteractionEnabled = true
newImage.addGestureRecognizer(tapGestureRecognizer)

And I tried adding a tag too but I can't figure out how to get the sender. I need to be able to run the function to hide the image and know which image to hide, that is the part i'm struggling with. Thanks in advance.


Solution

  • You get UITapGestureRecognizer object in your selector's parameter and it has a property view that gives you the view which has been tapped.

    let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.imageTapped(_:)))
    
    func imageTapped(_ sender: UITapGestureRecognizer) {
        guard let tappedImage = sender.view else { return } 
    }