2017-02-10 50 views
1

Im使用我已经放在图像视图上的轻击手势的问题。该图像当前作为“ActionLiked”存储在资产中,并且已将图像视图设置为该图像。然后将其呈现为基于JSON动态的表格视图(因此,对于放入JSON数组中的每个项目都重复)。我添加了轻击手势,每次点击它时都会打印出“TAPPED”,但它似乎并不是一直在工作 - 当前有7个项目在表格中,轻击手势将在1上工作,然后在接下来的2然后在第四一个工作,并且重复图案Swift 3 - 使用Tap Gesture的图像视图

项目1 - WORK ITEM 2 - NO WORK 第3项 - NO WORK 第4项 - WORK 第5项 - NO WORK 第6项 - NO WORK 第7项 - WORK

我的调试控制台中出现错误 无法从标识为 的包中加载引用nib的图像但是图像在每个人身上正确显示只是不识别轻击手势?

+0

请,向我们展示了一些代码... –

回答

10

下面的代码可以帮助你更与SWIFT 3

正如你说你要来检测的tableview细胞图像自来水请到通过这个代码:

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

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

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

func connected(_ sender:AnyObject){ 
    print("you tap image number : \(sender.view.tag)") 
} 
+0

所以,当我尝试这方面,我每次得到一个未捕获的异常我按手势 '让tapGesture = UITapGestureRecognizer(目标:自我,动作:#selector(NewsFeedVC.likePost (_ :))) self.actionLike.isUserInteractionEnabled =真 self.actionLike.addGestureRecognizer(tapGesture)' 'FUNC likePost(_发件人:UITapGestureRecognizer){ 打印( “螺纹”) }' 由于未捕获异常'NSInvalidArgumentException'而终止应用程序,原因:'-PostCell likePost:]:无法识别的选择器发送t o实例0x7fbc3e894a00' – Chad

+0

@Chad正如你所说你需要使用tableview来代替使用self.actionLike来进行表视图,使用cell.actionLike并确定它们是很好的,你需要根据单元格索引分配标签在tableview中。并确保启用细胞图像的用户界面。 –

0

我最近有一个似乎与你相似的问题。我有很多图片,当用户点击它们时,我都希望以同样的方式回应。经过一番尝试,我清楚地看到每个图像都必须有自己的UITapGestureRecognizer实例。最后我用这样的代码,这确保了每一个形象回应被窃听:

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

的想法是,你应该为每一个的UIImageView创建独特的手势识别。

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

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

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

4

请检查UIImageViewisUserInteractionEnabledtrue