从点击手势识别器获取标签
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)")
}
我有一组 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)")
}