【发布时间】:2017-06-13 14:28:23
【问题描述】:
我在标签上有一个 UITapGestureRecognizer:
cell.label.userInteractionEnabled = true
let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(ViewController.labelTapped))
cell.label.addGestureRecognizer(gestureRecognizer)
我希望它在用户点击它时更改文本。在 Stackoverflow 上寻找答案数小时后,我已经到了可以更改标签文本的地步。但它也会更改其他单元格标签上的文本。这是我实现的:
func labelTapped(recognizer: UIGestureRecognizer){
print("Label tapped.")
let position: CGPoint = recognizer.locationInView(self.tableView)
let indexPath: NSIndexPath = self.tableView.indexPathForRowAtPoint(position)!
let cell = self.tableView.cellForRowAtIndexPath(indexPath) as! DataTableViewCell
cell.label.text = "Test."
}
帮我找到解决办法。
【问题讨论】:
-
您是否尝试将 sender 参数添加到手势识别器目标操作?您可以检查发件人是否为 UILabel 并仅修改该实例。
-
iOS 单元格是可重复使用的。在显示每个单元格时,您必须检查标签是否已被点击。
-
@Emptyless 我相信
recognizer: UIGestureRecognizer可以作为发件人使用。但是如何检查发件人是否是 UILabel?你的意思是没有使用cell和indexPath来检测这里的特定单元格? -
@Caleb 我用哪种方法检查它?
cellForRowAtIndexPath会好吗?如果是这样,我如何检测标签是否在cellForRowAtIndexPath中被点击?
标签: ios swift uitableview uitapgesturerecognizer