我在使用我放在图像视图上的轻击手势时遇到了问题。该图片目前存储在资产中,作为“动作”和“动作”。我已将图像视图设置为此图像。然后将其呈现为基于JSON动态的表视图(因此,对于放入JSON数组中的每个项目,它都会重复)。我添加了点按手势以打印出来&#39; TAPPED&#39;然而,每次我点击它,它似乎不是一直工作 - 表中的7个项目,点击手势将工作1然后不工作在接下来的2然后工作在第4个并重复该模式< / p>
第1项 - 工作 第2项 - 没有工作 第3项 - 没有工作 第4项 - 工作 第5项 - 没有工作 第6项 - 没有工作 第7项 - 工作
我的调试控制台出错了 无法加载&#34;&#34;从带有标识符的包中的nib引用的图像 但是图像在每一个上都没有正确显示,只是没有识别出敲击手势?
答案 0 :(得分:24)
以下代码可以帮助您更快地使用swift 4
正如您所说,您要检查tableview单元格上的图像点按,请完成以下代码:
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(ViewController.connected(_:)))
cell.yourImageView.isUserInteractionEnabled = true
cell.yourImageView.tag = indexPath.row
cell.yourImageView.addGestureRecognizer(tapGestureRecognizer)
将以下方法添加到ViewController
@Obj func connected(_ sender:AnyObject){
print("you tap image number : \(sender.view.tag)")
}
答案 1 :(得分:9)
请检查isUserInteractionEnabled
UIImageView
的{{1}}是否为true
答案 2 :(得分:2)
我最近遇到的问题与你的问题相似。我有很多图像,每当用户点击它们时,我都希望以相同的方式响应这些图像。经过一些实验,我清楚地知道每个图像都必须有自己的UITapGestureRecognizer
实例。我最终使用了这样的代码,这确保了每个图像都被响应了:
for imageView in imageViews {
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(tapResponse))
imageView.addGestureRecognizer(tapGestureRecognizer)
imageView.isUserInteractionEnabled = true
}
答案 3 :(得分:0)
我们的想法是你应该为每个UIImageView创建独特的手势识别器。
let gestureRecognizerOne = UITapGestureRecognizer(target: self, action: #selector(tap))
firstImageView.addGestureRecognizer(gestureRecognizerOne)
let gestureRecognizerTwo = UITapGestureRecognizer(target: self, action: #selector(tap))
secondImageView.addGestureRecognizer(gestureRecognizerTwo)
但是我没有看到你的代码,所以,也许你应该在循环中创建它或类似的东西。