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

Posted

技术标签:

【中文标题】从点击手势识别器获取标签【英文标题】:Getting Tag from Tap Gesture Recognizer 【发布时间】:2019-03-12 12:31:39 【问题描述】:

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

    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 =  $0.tag
        $0.isUserInteractionEnabled = true
        $0.addGestureRecognizer(tap)
    

并像处理函数一样

  @objc func handleTap(_ sender: UITapGestureRecognizer) 
     guard let getTag = sender.view?.tag else  return 
    print("getTag == \(getTag)")

【讨论】:

【参考方案2】:

如果您想在 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 或其他 View 获取标签。

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

【讨论】:

【参考方案3】:

您可以使用 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)

【讨论】:

以上是关于从点击手势识别器获取标签的主要内容,如果未能解决你的问题,请参考以下文章

自定义页脚视图没有响应我的点击手势识别器标签

点击手势识别器

在边界内点击手势识别器

如何从表格视图单元格中的图像手势获取 indexPath

SWIFT4:如何让两个点击手势识别器一起工作

Android点击事件之多点触摸与手势识别