iOS 解决两个tableView.嵌套滚动手势冲突

我们有这样一个场景,就是页面上有一个大的tableView,

每一个cell都是和屏幕一样高的,然后cell中还有一个可以

tableView,比如直播间的情形,这个时候如果我们拖动

cell里面的tableView滚动的话,如果滚动到内部tableView的边缘,会带动外层的tableView滚动,效果如下

这是iOS ScrollView嵌套使用时候自带的一个机制,但是这个效果是我们不想要的,我们想要的效果是我们滚动cell里面的tableView的时候,滚动到边缘,不会带动外层的tableView滚动

经过调试,发现,我们拖动cell中的tableView的时候,

如果该tableView 已经滚动到边缘了,则cell中的tableView不会滚动,系统会自动处理,会执行外部的滚动,这个时候是没有问题的,符合我们的需求,

还有一种情况是需要我们处理的,就是当我们滚动

cell里面的tableView (a)的时候,cell里面的tableView没有滚动到边缘,这个时候,当该a 滚动到边缘,就会带动

外层的tableView滚动,这是我们不想要的,

我们可以这样处理,自定义一个tableView, 重写

gestureRecognizerShouldBegin 方法,在该方法里面,

将外层tableView设置为不可滚动

即,
这里要知道一个机制,就是,如果我们开始拖动的时候,a已经滚动到边缘了,则他的 gestureRecognizerShouldBegin
不会调用

复制代码
@interface LBConfictTableView () <UIGestureRecognizerDelegate>

@end

@implementation LBConfictTableView

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
    NSLog(@"哈哈哈哈哈哈内层的开始方法内层的开始方法");
    self.bigTableView.scrollEnabled = NO;
    return YES;
}

@end

然后在停止滚动的时候,将外层tableView设置为可以滚动

复制代码
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    self.tableView.bigTableView.scrollEnabled = YES;
}

看效果图

相关推荐
黑科技iOS上架34 分钟前
iOS应用上架:提前规避审核被拒风险
ios·审核
加载力科技3 小时前
Mac解压RAR分卷全攻略-part01part02一键合并
macos·mac 解压 rar 分卷·rar 分卷·part01·mac 解压工具·乐压·分卷合并
茶底世界之下3 小时前
方图一定要裁照片吗?用 Awaking 比较裁切与留白
ios
2601_967979125 小时前
Opteryx Python库 macOS版本0.0.0a12
python·macos·1024程序员节·wheel·opteryx·alpha
00后程序员张5 小时前
无需 Mac 的 iOS App 上架工具,开心上架Appuploader 负责哪些环节
android·ios·小程序·https·uni-app·iphone·webview
2501_915106325 小时前
Windows 用 KXBuild 开发 iOS 项目,CocoaPods、SPM 怎么处理?
windows·vscode·ios·个人开发·swift·敏捷流程·cocoapods
2501_915909066 小时前
KXApp 能打开哪些 iOS 项目?xcodeproj 与 CocoaPods 支持清单
ide·vscode·ios·个人开发·xcode·敏捷流程·cocoapods
开心就好202519 小时前
uni-app 本地打包 iOS,在 Windows 上使用 KXBuild 产出 ipa 并上架的完整流程
后端·ios
调试人生的显微镜20 小时前
跨平台抓包工具怎么选?TraceEagle抓包鹰 的四种跨平台能力
后端·ios
Khalil三省21 小时前
MacBook 刘海显示歌词:让 Mac 也有灵动岛歌词
macos·开源·效率工具·音乐