Swift 3 - 使用Tap Gesture

时间:2017-02-10 14:13:02

标签: ios swift swift3 gesture

我在使用我放在图像视图上的轻击手势时遇到了问题。该图片目前存储在资产中,作为“动作”和“动作”。我已将图像视图设置为此图像。然后将其呈现为基于JSON动态的表视图(因此,对于放入JSON数组中的每个项目,它都会重复)。我添加了点按手势以打印出来&#39; TAPPED&#39;然而,每次我点击它,它似乎不是一直工作 - 表中的7个项目,点击手势将工作1然后不工作在接下来的2然后工作在第4个并重复该模式< / p>

第1项 - 工作 第2项 - 没有工作 第3项 - 没有工作 第4项 - 工作 第5项 - 没有工作 第6项 - 没有工作 第7项 - 工作

我的调试控制台出错了 无法加载&#34;&#34;从带有标识符的包中的nib引用的图像 但是图像在每一个上都没有正确显示,只是没有识别出敲击手势?

4 个答案:

答案 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)

但是我没有看到你的代码,所以,也许你应该在循环中创建它或类似的东西。