2016-10-27 3 views
0

Я пытаюсь передать UIImageView в качестве параметра через UITapGestureRecognizer, например. addTapGestureRecognizer(passedView: questionImage), где questionImage - UIImageView. Код так:Cant pass UIImageView в 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") 
     } 

    } 

Когда я нажимаю на UIImageView он обнаруживает кран и печатает первое утверждение. Однако он не будет отличать sender в UIImageView и распечатать второе утверждение. Что я здесь делаю неправильно?

+0

вы добавили жест для просмотра не ImageView –

+0

UIImageView является UIView. (Подкласс) – KexAri

ответ

2

Вам необходимо пройти sender.view для того, чтобы получить какой вид сливают

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") 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^