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

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

【问题讨论】:

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

标签: ios swift uitableview uikit uigesturerecognizer


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

      var isScrolling = false
      
    2. 添加两个UIScrollView委托方法并更新isScrolling变量如下:

      func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
          self.isScrolling = true
      }
      
      func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
          self.isScrolling = false
      }
      
    3. 在您的UITableViewCell 中只需添加以下 if 条件:

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

    【讨论】:

    • 感谢您的回答。我有CustomTableViewCell,它继承了UITableViewCellisScrollingViewController 中,平移手势在自定义单元格中,如何从 VC 获取此信息?
    • 您介意在您的问题中添加代码以显示您在哪里添加手势吗?
    猜你喜欢
    • 2010-12-07
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 2019-07-11
    • 2016-04-08
    • 2014-02-08
    相关资源
    最近更新 更多