iOS开发 两层tableview嵌套滚动的实现逻辑

Github Demo 地址

  1. 业务场景各种首页经常会有上下滚动,左右滚动的场景,如以下效果
业务场景
  1. 实现效果
iOS开发 两层tableview嵌套滚动的实现逻辑_第1张图片
demo效果
  1. 层级结构
iOS开发 两层tableview嵌套滚动的实现逻辑_第2张图片
逻辑介绍
  1. 滚动逻辑
iOS开发 两层tableview嵌套滚动的实现逻辑_第3张图片
层级介绍
  1. 代码实现中的一些细节处理

让内层的tableView滑动手势可以传出去,这时候需要一个继承UITableView,以下是GestureTableView.swift文件

//
//  GestureTableView.swift
//  ScrollDemo
//
//  Created by Dylan Chen on 2019/10/8.
//  Copyright © 2019 ScrollDemo. All rights reserved.
//

import UIKit

class GestureTableView: UITableView, UIGestureRecognizerDelegate {

    var isCanScroll: Bool = false
    
    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        return true
    }
}

内层防止左右滚动的时候可以上下滚动

    func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
        if scrollView == containerScrollView {
            leftTableView.isScrollEnabled = false
            rightTableView.isScrollEnabled = false
        }
    }
    
    func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
        if scrollView == containerScrollView {
            leftTableView.isScrollEnabled = true
            rightTableView.isScrollEnabled = true
        }
    }
    
    func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
        if scrollView == containerScrollView {
            if !decelerate {
                leftTableView.isScrollEnabled = true
                rightTableView.isScrollEnabled = true
            }
        }
    }

你可能感兴趣的:(iOS开发 两层tableview嵌套滚动的实现逻辑)