滑动时已选择CollectionView单元格

时间:2019-02-21 11:33:01

标签: ios swift uicollectionview uicollectionviewcell

我有一个显示单元格的collectionView。当我在某个项目上拖动/触摸/滑动手指时,如果触摸在该项目上结束,则将选中该单元格(进入详细信息屏幕)。

是否有任何方法可以将单元格选择(didSelectItemAt indexPath)限制为简单的点击?也就是说,如果在项目上拖动手指并且触摸结束,则不应选择该单元格。

这是默认行为吗?

我觉得这可能是我的自定义导航中的一个隐秘问题的原因。

谢谢

enter image description here

2 个答案:

答案 0 :(得分:0)

请在您的cellForItem中添加以下内容

 let tap = UITapGestureRecognizer(target: self, action: #selector(cellTapped(tapGestureRecognizer:)))
    tap.numberOfTapsRequired = 1
cell.addGestureRecognizer(tap)

并添加以下功能

@IBAction func cellTapped(tapGestureRecognizer: UITapGestureRecognizer)
{
//Do your required work.
}

答案 1 :(得分:0)

您可以使用UITapGestureRecognizer,因为它只会在点击手势时响应:

@objc func tapAction(_ sender: UITapGestureRecognizer) {
    // TODO: - Action you need
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: <CellReuseId>, for: indexPath) 
    let tap = UITapGestureRecognizer(target: self, action: #selector(tapAction(_:)))
    cell.contentView.addGestureRecognizer(tap)
    return cell
}
  

但是以这种方式didSelectItemAt无效。