gpt4 book ai didi

ios - 在 ScrollView 内的多个 ImageView 上点击手势不触发事件,只有第一个 ImageView 点击手势起作用?

转载 作者:行者123 更新时间:2023-11-30 13:33:40 24 4
gpt4 key购买 nike

场景是我有一个 ImageView ,我已将其添加到 ScrollView 中,然后在每个 ImageView 上添加点击手势,但只有第一个 ImageView 触发事件。

已尝试以下操作:

<强>1。创建了 imageview 扩展

extension UIImageView {
public func openMenu() {
let tapGestureRecognizer = UITapGestureRecognizer(target:self, action:Selector("handleTapGesture:"))
//mImg.addGestureRecognizer()
self.addGestureRecognizer(tapGestureRecognizer)
print("open")
}
}

<强>2。在循环中添加了点击手势(在 ScrollView 上添加 ImageView 的方式与添加点击手势的方式相同)

//the loop go till all images will load
for var index = 0; index < imagesName.count; index++ {
let mImg: UIImageView = UIImageView()
let pDict = homePageProductArr[index] as NSDictionary

//Create a UIVIEW
let containerView:UIView = UIView(frame: CGRect(x: 0, y: 0, width: 80, height: 100))
let nameLabel:UILabel = UILabel(frame:CGRect(x: xOffset+20, y: 85, width: 100, height: 20))
nameLabel.text = (pDict.objectForKey("CategoryName") as! String)
nameLabel.font = UIFont(name: "Helvetica Neue", size: 10.0)
containerView.addSubview(nameLabel)

let tapMenuCategoryImageTGR = UITapGestureRecognizer(target: self, action: Selector("handleTapGesture:"))
containerView.addGestureRecognizer(tapMenuCategoryImageTGR)

// make the imageview object because in scrollview we need image
mImg.frame = CGRectMake(5 + xOffset, 0, 80, 80)
// the offset represent the values, used so that topleft for each image will
// change with(5+xOffset, 0)and the bottomright(160, 110)
//mImg.image = UIImage(named: imagesName[index])
mImg.imageFromUrl(imagesName[index])
//mImg.imageFromServerURL(imagesName[index])
//Creating Circular Image
//mImg.layer.borderWidth = 1
mImg.layer.masksToBounds = true
mImg.layer.borderColor = UIColor.whiteColor().CGColor
mImg.layer.cornerRadius = mImg.frame.height/2
mImg.clipsToBounds = false
mImg.openMenu()
mImg.userInteractionEnabled = true
mImg.addGestureRecognizer = tapMenuCategoryImageTGR

// The image will put on the img object
images.insert(mImg, atIndex: index)
//Put the img object at the images array which is mutable array
scrollview.contentSize = CGSizeMake(120 + xOffset, 110)
//scroll view size show after 125 width the scroll view enabled
scrollview.addSubview(images[index] as! UIView)
//set images on scroll view
xOffset += 100
}

请分享您的建议。

最佳答案

这不是UIScrollView的问题。我们可以使用手势来查看单个 View 。下面给出了您问题的另一个解决方案 -

  1. 您必须全局声明点击手势。

    var  singleTap:UITapGestureRecognizer!
  2. 在此步骤中,我们创建一个函数,该函数采用 UIimageView 并在其顶部添加手势。

      func setGesture(img_View:UIImageView)  {
    singleTap = UITapGestureRecognizer.init(target: self, action: Selector("resignResponder"))
    singleTap.numberOfTapsRequired = 1
    view.addGestureRecognizer(singleTap)

    }

  3. 现在创建手势操作。

    func resignResponder()  {

    }

These are the three steps as the solution of your problem . Call "setGesture" for every imageView. You can successfully recognize the tap for every imageView.

关于ios - 在 ScrollView 内的多个 ImageView 上点击手势不触发事件,只有第一个 ImageView 点击手势起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36319713/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com