从点击手势识别器获取标签
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)
【讨论】:
以上是关于从点击手势识别器获取标签的主要内容,如果未能解决你的问题,请参考以下文章