如何在选择单元格上的 UIcollectionViewCell 特定单元格中删除长手势?

Posted

技术标签:

【中文标题】如何在选择单元格上的 UIcollectionViewCell 特定单元格中删除长手势?【英文标题】:How to remove long gesture in UIcollectionViewCell particular cell on selection cell? 【发布时间】:2017-11-29 10:26:38 【问题描述】:

我已经像这样添加了Long gesture

longPress = UILongPressGestureRecognizer(target: self, action: #selector(handleLongGesture))

longPress.minimumPressDuration = 0.25
collectionview.addGestureRecognizer(longPress)

如何去除长手势?

【问题讨论】:

谁能帮帮我 How to remove all gesture recognizers from a UIView in Swift的可能重复 【参考方案1】:

找到单元格和添加到单元格的手势列表,然后删除您想要的手势..

let cell:UICollectionViewCell =  collectioView.cellForItem(at: IndexPath(row: 5, section: 0))!


        for ges in cell.gestureRecognizers!
            if ges is UILongPressGestureRecognizer
               cellView.removeGestureRecognizer(ges)
            
        

【讨论】:

我想删除collectionview单元格上的长手势假设5行【参考方案2】:

您可以在单元格准备好显示之前移除手势。

func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) 
        if let gesture = cell.gestureRecognizers?.filter( (gesture) -> Bool in return  gesture is UILongPressGestureRecognizer ).first 
            cell.removeGestureRecognizer(gesture)
        
    

【讨论】:

【参考方案3】:

您正在为整个集合视图添加手势识别器。

所以,如果您只希望一个单元格不响应长手势,则对于该特定单元格禁用手势识别器(使用 touchesBegan 回调来检查单元格内发生的触摸事件,如果是,则通过代码处理事件你希望)。

如果您希望在多个单元格上使用此功能,请为每个需要单独识别器的单元格添加手势识别器。

【讨论】:

以上是关于如何在选择单元格上的 UIcollectionViewCell 特定单元格中删除长手势?的主要内容,如果未能解决你的问题,请参考以下文章

将组合框单元格上的双击激活更改为单击?

如何在 UICollectionView 中检测“仅单指”单元格上的双击?

如何在ios中的tableview单元格上的文本字段上返回文本字段上的键盘

在表格视图中按下单元格上的按钮时如何创建新单元格

如何连续更新一堆表格单元格上的滑块?

自定义表格视图单元格上的多个图像(Swift)