Search code examples
iosswiftuiimageviewuitapgesturerecognizer

Access values within '<>' sign


I have a gesture recognizer that looks like this:

@objc func handleTap(_ sender: UITapGestureRecognizer) {
    var currentImage = sender.view
    print(currentImage)

}

And prints out this:

Optional(<UIImageView: 0x7ff72601ddd0; frame = (0 0; 414 414); opaque = NO; gestureRecognizers = <NSArray: 0x600000b541e0>; layer = <CALayer: 0x6000005be0c0>>)

How do I get the value of UIImageView in sender.view?

P.S.

The code that calls the tap recognizer looks like this:

var tap = UITapGestureRecognizer()

override func viewDidLoad() {
    super.viewDidLoad()

    tap = UITapGestureRecognizer(target: self, action: #selector(ViewController.handleTap(_:)))
    tap.numberOfTapsRequired = 1
    tap.numberOfTouchesRequired = 1

    imageView.addGestureRecognizer(tap)
    imageView.isUserInteractionEnabled = true
}

Solution

  • You can use

    if let  currentImage = sender.view as? UIImageView {
    
    }
    

    OR directly if 100 % sure

    let  currentImage = sender.view as! UIImageView
    

    OR

    guard let currentImage = sender.view as? UIImageView else { return }
    /// then use unwrapped currentImage