简体   繁体   English

在分页ScrollView中将TapGesture添加到ImageView

[英]Adding TapGesture to ImageViews in paging ScrollView

I have a paging UIScrollView , each page just has an UIImageView and a View. 我有一个分页的UIScrollView ,每个页面只有一个UIImageView和一个View。 I would like to add a description of the Image shown on the View, and I want to be able to show/hide the View by tapping the UIImageView . 我想添加对在View上显示的Image的描述,我希望能够通过点击UIImageView来显示/隐藏View。

I have tried a few ways of adding the GestureRecognizer , but it does not seem to work. 我尝试了几种添加GestureRecognizer ,但是它似乎不起作用。 The Code below is where my Pages get created. 下面的代码是创建我的页面的地方。 With Slide1 and Slide 2 showing 2 different ways I tried to add the GestureRecognizer . 在Slide1和Slide 2显示2种不同方式的情况下,我尝试添加GestureRecognizer

   let tapGesture = UITapGestureRecognizer(target: self, action: #selector(showOrHide))

@objc func showOrHide(){
    print("tapped")

    for slide in slides{

        slide.labelView.isHidden = true
    }
}


func createSlides() -> [Slide] {
    print("creating Slides")
    let slide1:Slide = Bundle.main.loadNibNamed("Slide", owner: self, options: nil)?.first as! Slide
    slide1.imageView.image = UIImage(named: "img1.jpg")
    slide1.imageView.isUserInteractionEnabled = true
    slide1.tapGestureRecogizer = UITapGestureRecognizer(target: self, action: #selector(showOrHide))

    let slide2:Slide = Bundle.main.loadNibNamed("Slide", owner: self, options: nil)?.first as! Slide
    slide2.imageView.image = UIImage(named: "img2.jpg")
    slide2.imageView.isUserInteractionEnabled = true
    slide2.imageView.addGestureRecognizer(tapGesture)

I assume I am misunderstanding something about how these Pages get created, I hope someone can help me. 我认为我对这些页面的创建方式有误解,希望有人能帮助我。

Thank you! 谢谢!

  1. Create tapGesture as a local variable inside createSlides . 创建tapGesture作为内部的局部变量createSlides
  2. Each view needs its own gesture recognizer. 每个视图都需要有自己的手势识别器。 You can share the selector but not the gesture. 您可以共享选择器,但不能共享手势。

Updated code: 更新的代码:

func createSlides() -> [Slide] {
    print("creating Slides")

    let slide1 = Bundle.main.loadNibNamed("Slide", owner: self, options: nil)?.first as! Slide
    slide1.imageView.image = UIImage(named: "img1.jpg")
    slide1.imageView.isUserInteractionEnabled = true

    var tapGesture = UITapGestureRecognizer(target: self, action: #selector(showOrHide))
    slide1.imageView.addGestureRecognizer(tapGesture)

    let slide2 = Bundle.main.loadNibNamed("Slide", owner: self, options: nil)?.first as! Slide
    slide2.imageView.image = UIImage(named: "img2.jpg")
    slide2.imageView.isUserInteractionEnabled = true

    tapGesture = UITapGestureRecognizer(target: self, action: #selector(showOrHide))
    slide2.imageView.addGestureRecognizer(tapGesture)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM