从点击手势识别器获取标签

Getting Tag from Tap Gesture Recognizer

我有一组 UIImageView 并以编程方式为它们分配了点击手势识别器。

    myImages.forEach{ UIImageView in
        let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap(gesture:)))
        tap.numberOfTapsRequired = 1
        tap.delegate = self
        view.addGestureRecognizer(tap)
        }

为每个人分配一个发件人的最佳方式是什么(或确定哪个图像被其他方式点击)?我试过没有成功

var tag = sender.view!.tag

谢谢!

这里需要两个步骤,

步骤 1

在附加到您的 myImages 数组之前,为 imageview 分配 tags

步骤 2

从 imageview 数组中获取标签并分配给您的每个手势

myImages.forEach{  
    let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap(_:)))
        tap.numberOfTapsRequired = 1
        tap.view?.tag =  [=10=].tag
        [=10=].isUserInteractionEnabled = true
        [=10=].addGestureRecognizer(tap)
    }

并像

那样处理函数
  @objc func handleTap(_ sender: UITapGestureRecognizer) {
     guard let getTag = sender.view?.tag else { return }
    print("getTag == \(getTag)")
}

您可以使用 UITapGestureRecognizer init 提供的块来访问您的图像。

myImages.forEach { image in
let tap = UITapGestureRecognizer(block: {[weak self] _ in
       //Do your stuff here
       //print("Image Tapped:", image.debugDescription)
}, delegate: self)
tap.numberOfTapsRequired = 1
image.addGestureRecognizer(tap)
}

如果您想在 UICollectionView 或 UITableView 单元格 中设置 UITapGestureRecognizer 那么下面的解决方案对我们很有用。

步骤 1 将 UITapGestureRecognizer 分配给 UICollectionView 或 UITableView 单元格中的特定文本视图或其他视图。

cell.textView?.delegate = self
cell.textView?.isEditable = false
cell.textView?.isSelectable = true
let tap = UITapGestureRecognizer(target: self, action:#selector(self.onclickLink(_:)))
cell.textView?.tag = indexPath.row
tap.numberOfTapsRequired = 1
cell.textView?.addGestureRecognizer(tap)

步骤 2 在 onclick 动作中从 UITextView 或其他视图获取标签。

    @IBAction func onclickLink(_ sender: UITapGestureRecognizer) {
        print("indexPathRow == \(sender.view?.tag ?? 0)")            
    }