# ScrollView嵌套ScrollView **Repository Path**: other-ter/scrollview_nested_scrollview ## Basic Information - **Project Name**: ScrollView嵌套ScrollView - **Description**: UIScrollView嵌套ScrollView滑动时手势冲突等相关问题 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2019-05-09 - **Last Updated**: 2021-05-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ScrollView嵌套ScrollView #### 介绍 UIScrollView嵌套ScrollView滑动时手势冲突等相关问题 #### 解决方案来源于 https://github.com/lmf12/MFNestTableView #### 方案说明 UIScrollView嵌套ScrollView滑动时手势冲突等相关问题(PS:TableView, CollectionView等) 本项目以UITableView嵌套UITableView来示例即:cell内部嵌套TableView等 实现思路: 用外部的table控制cell中的table是否滑动,cell控制外部table是否滑动 --(滑动-即产生有效的位置偏移) 我最先用scrollEnabled属性来控制控制对应的table是否可以滑动,出现了严重的问题,即每次要切换要滑动的table时,不能立即让目标 立即滑动,只能松开手指再次滑动才可以切换,所以不能用scrollEnabled来控制 看了: https://github.com/lmf12/MFNestTableView 发现控制目标table是否滑动直接控制对应table的滑动切换的临界点的contentOffset就能解决问题 实现思路: 让内外table都能同时滑动,然后用contentOffset控制对应table的临界值 具体实现(下面的滑动指的是目标table可以产生有效的偏移) 第一步: 最外层的table必须支持多手势的传递,即: 实现一个继承UITableView的控件并实现: - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { return YES; } 这样内外的table都可以同时滑动了。 第二步: 外部table控制cell内部的table可以滑动,cell控制外部table可以滑动 第三步: 控制可有效滑动的table的临界点,使用contentOffset来控制临界点 第四步: cell可以利用delegate控制table可以滑动,外部table所在处(VC)直接控制cell可以滑动 目标table的不能滑动标记控制(即对应能否滑动标记为NO),将在自己的内部控制,而不会被另外的table控制为 NO 然后就可以了,如果忘了就看代码