2016-10-27 6 views
0

Ich versuche, eine UIImageView als Parameter durch eine UITapGestureRecognizer, z. addTapGestureRecognizer(passedView: questionImage) wobei questionImage ein UIImageView ist. Code wie folgt:Cant pass UIImageView in UITapGestureRecognizer

// MARK: Tap Gesture Recognizer 

    func addTapGestureRecognizer(passedView: UIView) { 
     let photoTapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(didTapPhoto(_:))) 
     photoTapGestureRecognizer.numberOfTapsRequired = 1 
     passedView.isUserInteractionEnabled = true 
     passedView.addGestureRecognizer(photoTapGestureRecognizer) 

    } 

    func didTapPhoto(_ sender: UITapGestureRecognizer) { 
     print("Did detect the tap") 
     if let imageView = sender as? UIImageView { 
      print("Is an image view") 
     } 

    } 

Wenn ich die UIImageView tippen sie den Hahn erkennt und druckt die erste Aussage. Allerdings wird sender nicht in UIImageView umgewandelt und die zweite Anweisung gedruckt. Was mache ich hier falsch?

+0

Sie hinzugefügt, um die Geste nicht die Imageview –

+0

ein UIImageView ein UIView zu sehen ist. (Eine Unterklasse davon) – KexAri

Antwort

2

Sie müssen sender.view passieren, um die Ansicht zu erhalten angezapft

func didTapPhoto(_ sender: UITapGestureRecognizer) { 
    print("Did detect the tap") 
    if (sender.view as? UIImageView) != nil { 
     print("Is an image view") 
    } 

} 
0
if let imageView = sender.view as? UIImageView { 
     print("Is an image view") 
    } 
Verwandte Themen