我有一个显示单元格的collectionView。当我在某个项目上拖动/触摸/滑动手指时,如果触摸在该项目上结束,则将选中该单元格(进入详细信息屏幕)。
是否有任何方法可以将单元格选择(didSelectItemAt indexPath
)限制为简单的点击?也就是说,如果在项目上拖动手指并且触摸结束,则不应选择该单元格。
这是默认行为吗?
我觉得这可能是我的自定义导航中的一个隐秘问题的原因。
谢谢
答案 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
无效。