iOS 多个TableView嵌套滚动处理

本文介绍了在iOS项目中遇到的两种UITableView嵌套滚动场景,包括从顶部和中间下拉刷新。通过设置允许同时识别手势,调整ContentOffset.y来实现效果。详细讲述了设置父视图和子视图的方法,以及在不同情况下如何处理滑动状态。文章提供了详细的步骤和注意事项,并建议读者查看提供的demo以更好地理解实现过程。
摘要由CSDN通过智能技术生成

前言

此次项目中遇到了两类UITableView嵌套使用的场景,里面遇到了一些问题,所以就写此文章记录一下

UITableView 嵌套 UITableView,

首先,设置允许同时识别手势,

class YLGestureTableView: UITableView, UIGestureRecognizerDelegate {
    
    open func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
   
        return true
    } 
}

1、UITableView嵌套,从顶部下拉刷新

通过观察视图需要滑动,来控制视图的Contentoffset.y的移动,来达到效果

1.1 设置父视图

此处继承父视图即可,顶部高度可以自己设置高度,通过通知来改变滑动状态,具体滑动哪个

class UpFatherController: UIViewController {
   
    
    // MARK: - 1.interface
    ///是否可以滑动
    private var canScroll: Bool = true
    ///顶部高度
    public let upTop: CGFloat = 300
    
    // MARK: - 2.lift cycle
    override func viewDidLoad() {
   
        super.viewDidLoad()

        NotificationCenter.default.addObserver(self, selector: #selector(notiScroll), name: NSNotification.Name("up_father"), object: nil)
    }
    deinit {
   
        NotificationCenter.default.removeObserver(self)
    }
    
    // MARK: - 3.private methods
    ///可以滚动接受
    @objc private func notiScroll() {
   
        canScroll = true
    }
}

extension UpFatherController: UIScrollViewDelegate {
   
    func scrollViewDidScroll(_ scrollView: UIScrollView) {
   
        let offSetY = scrollView.contentOffset.y
        if canScroll == false {
   
            scrollView.contentOffset = CGPoint(x: 0, y: upTop)
        }
        if offSetY >= upTop {
   
            canScroll = false
            NotificationCenter.default.post(name: NSNotification.Name("up_son"), object: nil)
            scrollView.contentOffset = CGPoint(x
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值