简体   繁体   中英

swift: gesture recognizer on UIImageView does not work

my viewcontroller contains a view into which another viewcontroller is being ebedded(in the storyboard). This viewcontroller contains a scrollview. When loaded i set up the scrollView like this:

override func viewDidLoad() {
    super.viewDidLoad()

    self.scrollView.delegate = self

    slides = self.getResultDetailImageSlides()
    setupSlideScrollView(slides: slides)

    self.pageControl.numberOfPages = slides.count
    self.pageControl.currentPage = 0
    view.bringSubview(toFront: self.pageControl)
}
func setupSlideScrollView(slides: [ResultDetailImageSlide]) {
    scrollView.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height)
    scrollView.contentSize = CGSize(width: view.frame.width * CGFloat(slides.count), height: view.frame.height)
    scrollView.isPagingEnabled = true

    for i in 0 ..< slides.count {
        slides[i].frame = CGRect(x: view.frame.width * CGFloat(i), y: 0, width: view.frame.width, height: view.frame.height)
        scrollView.addSubview(slides[i])
    }
}
func getResultDetailImageSlides() -> [ResultDetailImageSlide] {
    let slide1: ResultDetailImageSlide = Bundle.main.loadNibNamed("ResultDetailImageSlide", owner: self, options: nil)?.first as! ResultDetailImageSlide
    slide1.imageView.image = UIImage(named: "ResultDetail_Placeholder_3D")
    slide1.imageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.openImage)))

    let slide2: ResultDetailImageSlide = Bundle.main.loadNibNamed("ResultDetailImageSlide", owner: self, options: nil)?.first as! ResultDetailImageSlide
    slide2.imageView.image = UIImage(named: "ResultDetail_Placeholder")

    return [slide1, slide2]
}
@objc func openImage() {
    //...
}

but the openImage() never gets called when i tap on the first image. Am i missing anything?

isUserInteractionEnabled is false by default, so try

slide1.imageView.isUserInteractionEnabled = true

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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