在collectionview中的uiimage上点击手势

Posted

技术标签:

【中文标题】在collectionview中的uiimage上点击手势【英文标题】:tap gesture on uiimage in collectionview 【发布时间】:2015-09-08 13:55:33 【问题描述】:

在我的UICollectionView 的每个单元格中,我都有多个要与之交互的对象。 因此,我真的想在单元格的每个对象上添加一个点击手势,而不是使用didSelect 委托方法。

为简单起见,我删除了示例中的所有其他对象:

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell 

  let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! PlacesCollectionViewCell

  let tap = UITapGestureRecognizer(target: self, action: "gotToSelectedPlace:")
  tap.numberOfTapsRequired = 1

  cell.imageView.userInteractionEnabled = true
  cell.imageView.addGestureRecognizer(tap)
  cell.imageView.file = places[indexPath.row].picture
  cell.imageView.loadInBackground()

  return cell


在 viewDidLoad 中,我使用笔尖:

collectionView.registerNib(UINib(nibName: "PlacesCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "Cell")

UICollectionView 设置:

延迟内容触摸:是的 可取消的内容触摸:是的

在这个例子中,我无法处理点击手势。什么都没发生。 我错过了什么吗??

谢谢

【问题讨论】:

您遇到了问题。单元格已经有一个轻击手势。那只是选择它。你不能在 didSelectItemAtIndexPath 和 didDeselect 中处理你的交互吗? imageView 是什么类型的对象?标准 UIImageView 没有 file 属性或 loadInBackground() 方法。这可能是问题 我忘了说,这个是PFFile,UIImageView的子类... @soulshined 我没有使用 didSelect 委托方法,所以在我看来没有问题。你不觉得吗? 【参考方案1】:

试试这个

 var doubletapgesture : UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "processDoubleTap:")
        doubletapgesture.numberOfTapsRequired = 1
        collectionView.addGestureRecognizer(doubletapgesture)

现在处理手势

func processDoubleTap (sender: UITapGestureRecognizer)
    
        if sender.state == UIGestureRecognizerState.Ended
        
            var point:CGPoint = sender.locationInView(collectionView)
            var indelPath:NSIndexPath =collectionView.indexPathForItemAtPoint(point)
            if indexPath
            
                println("image taped")
            
            else
            
               //Do Some Other Stuff Here That Isnt Related;
            
        
    

【讨论】:

它是这样工作的,但我必须检查我的对象的每个点位置......不明白为什么我的代码不起作用,更容易。 在您的情况下,您正在为每个单元格添加手势,这会占用太多内存。 如果你在 UIViewController 中有多个手势,它可能会相互冲突。

以上是关于在collectionview中的uiimage上点击手势的主要内容,如果未能解决你的问题,请参考以下文章

一个collectionview单元格中有两个UIImage?

Swift 在 CollectionView 中结合 PHAsset 和 UIImage

将 NSData 数组转换为 UIImage 数组

如何将 UIImages 数组添加到集合视图

如何在 CollectionView 中显示从照片库或相机中选择的图像?画廊视图

使用大型UIImage数组时的内存问题导致崩溃(swift)