David Tamrazov
David Tamrazov

Reputation: 597

UIImage wont recognize tap gesture Swift

I'm trying to add a tap gesture recognizer to some UIImages that are in a side scrollview, but the images flat out won't recognize the tap and I can't see where I went wrong. I've tried "scrollView.bringSubViewToFront(imgView)" because I figured they might be getting buried in layers of other views, but that didn't do the trick either. "contentView" is the UIImageView in question, where my scrollView is just a collection of those. Any help here would be appreciated, thank you.

//function to create contentScrollView for MiniMatches
func setupMiniContentScroll(contentScroll: UIScrollView) {
    let scalar:Double = 4/19
    let contentViewDimension = contentScroll.frame.width * CGFloat(scalar)
    let contentScrollWidth = CGFloat(LocalUser.matches.count) * (contentViewDimension + CGFloat(12)) - CGFloat(12)
    let matchManager = MatchesManager()

    for index in 0..<LocalUser.matches.count {
        let match = LocalUser.matches[index]
        matchManager.retrieveMatchThumbnail(match) { img, error in


            if let img = img {

                //create the mini matches views
                let xOrigin = index == 0 ? 12 : CGFloat(index) * contentViewDimension + (CGFloat(12) * CGFloat(index) + CGFloat(12))
                let contentFrame = CGRectMake(xOrigin, 10, contentViewDimension, contentViewDimension)
                let contentView = self.makeMiniContentView(contentFrame, image: img, matchedPrice: match.matchedPrice)

                let tap = UITapGestureRecognizer(target: self, action: #selector(BrowseViewController.toggleItemInfo(_:)))
                contentView.addGestureRecognizer(tap)
                self.miniMatchContainer.append(contentView)

                //update the contentScrollView
                dispatch_async(dispatch_get_main_queue()) {

                    let contentLabelFrame = CGRect(x: xOrigin, y: contentFrame.height + 15, width: contentFrame.width, height: 20)
                    let contentLabel = self.makeMiniContentLabel(contentLabelFrame, itemName: match.itemName)
                    let priceLabel = self.makeMiniPriceLabel(contentFrame, matchedPrice: match.matchedPrice)

                    contentScroll.addSubview(contentView)
                    contentScroll.addSubview(contentLabel)
                    contentScroll.addSubview(priceLabel)
                    contentScroll.contentSize = CGSizeMake(contentScrollWidth + CGFloat(16), contentScroll.frame.height)
                }
            }

        }
    }
}

Upvotes: 0

Views: 342

Answers (1)

Volodymyr
Volodymyr

Reputation: 1205

Did you set UIImage property userInteractionEnabled to true?

Upvotes: 4

Related Questions