Swift 3 - 使用点击手势查看图像

Swift 3 - Image view with Tap Gesture

我在使用放置在图像视图上的点击手势时遇到问题。该图像当前作为 'ActionLiked' 存储在资产中,我已将图像视图设置为此图像。然后它被渲染成一个 table 视图,它是基于 JSON 的动态视图(所以它对我放入 JSON 数组的每个项目重复)。我添加了点击手势以在每次单击它时打印出 'TAPPED' 但是,它似乎并非一直有效 - 当前在 table 中有 7 个项目,点击手势将在 1 上工作然后在接下来的 2 个上不工作然后在第 4 个上工作并重复该模式

项目 1 - 工作 第 2 项 - 无工作 第 3 项 - 无工作 第 4 项 - 工作 第 5 项 - 无工作 第 6 项 - 无工作 项目 7 - 工作

我的调试控制台出现错误 无法加载从带有标识符的包中的笔尖引用的“”图像 但是图像在每个图像上都正确显示,只是无法识别点击手势?

我最近遇到了一个与您相似的问题。我有许多图像,我希望在用户点击它们时以相同的方式响应所有这些图像。经过一些试验,我清楚地知道每个图像都必须有自己的 UITapGestureRecognizer 实例。我最终使用了这样的代码,它确保每张图片都响应被点击:

for imageView in imageViews {
    let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(tapResponse))
    imageView.addGestureRecognizer(tapGestureRecognizer)
    imageView.isUserInteractionEnabled = true
}

想法是您应该为每个 UIImageView 创建唯一的手势识别器。

let gestureRecognizerOne = UITapGestureRecognizer(target: self, action: #selector(tap))
firstImageView.addGestureRecognizer(gestureRecognizerOne)

let gestureRecognizerTwo = UITapGestureRecognizer(target: self, action: #selector(tap))
secondImageView.addGestureRecognizer(gestureRecognizerTwo)

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

请检查 UIImageViewisUserInteractionEnabledtrue

以下代码可能对您有更多帮助 Swift 4.

如您所说,您想要检测表格视图单元格上的图像点击,请执行以下代码:

let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(ViewController.cellTappedMethod(_:)))

cell.yourImageView.isUserInteractionEnabled = true
cell.yourImageView.tag = indexPath.row
cell.yourImageView.addGestureRecognizer(tapGestureRecognizer)

并将以下方法添加到您的 ViewController:

@objc func cellTappedMethod(_ sender:AnyObject){
     print("you tap image number: \(sender.view.tag)")
}