UITableViewCell 滚动检测

Posted

技术标签:

【中文标题】UITableViewCell 滚动检测【英文标题】:UITableViewCell scroll detecting 【发布时间】:2019-03-27 14:10:33 【问题描述】:

我在自定义UITableViewCell 中有手势识别器,我想在表格视图滚动期间禁用它。是否可以在自定义UITableViewCell 中检测到表格视图是否正在滚动?

【问题讨论】:

因为 UITableview 继承了滚动视图,你可以在滚动发生时使用滚动视图委托方法scrollViewDidScroll 如何在表格视图单元格中发送此信息? 【参考方案1】:

ios Swift 中使用这个扩展来检测特定的 tableview 滚动

extension ViewController: UIScrollViewDelegate 
    func scrollViewDidScroll(_ scrollView: UIScrollView) 
        if scrollView == tableName 
            // write logic for tableview disble scrolling
        
    

【讨论】:

【参考方案2】:

正如@jarvis12 在评论中提到的,UITableView 继承自UIScrollView,您可以利用它的委托方法。

    添加一个全局 bool 变量,该变量将用作检查当前滚动状态的标志。

    var isScrolling = false
    

    添加两个UIScrollView委托方法并更新isScrolling变量如下:

    func scrollViewWillBeginDragging(_ scrollView: UIScrollView) 
        self.isScrolling = true
    
    
    func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) 
        self.isScrolling = false
    
    

    在您的UITableViewCell 中只需添加以下 if 条件:

    if isScrolling 
        //disable pan gesture
    
    else 
        //enable pan gesture
    
    

【讨论】:

感谢您的回答。我有CustomTableViewCell,它继承了UITableViewCellisScrollingViewController 中,平移手势在自定义单元格中,如何从 VC 获取此信息? 您介意在您的问题中添加代码以显示您在哪里添加手势吗?

以上是关于UITableViewCell 滚动检测的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewCell 中 UIButton 的 NSIndexPath

如何在 UITableViewCell 上使用 CAGradientLayers

uitableviewcell 中的自动布局问题

如何在 UITableViewCell 中添加多行文本字段?

当附件是UITableViewCellAccessoryCheckmark时,如何将文本置于UITableViewCell中

自定义 UITableViewCell 创建了两次......让我发疯