当前位置: 首页 > article >正文

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;
}

看效果图
请添加图片描述


http://www.kler.cn/a/500441.html

相关文章:

  • [创业之路-242]:《华为双向指挥系统》-1-组织再造-企业普遍采用的5种组织结构形式
  • MySQL存储引擎、索引、索引失效
  • 【Apache Paimon】-- 13 -- 利用 paimon-flink-action 同步 mysql 表数据
  • 【权限管理】Apache Shiro学习教程
  • 《光学遥感图像中显著目标检测的多内容互补网络》2021-9
  • 深度学习-82-大语言模型LLM之基于langchain加载本地文档向量存储后检索
  • C# 告别FirstOrDefault
  • 轻松高效拿捏C语言02Hello World
  • zerotier已配置但ip连不上?
  • PHP多功能投票小程序源码
  • 代码随想录day26 | leetcode 134.加油站 135.分发糖果 860.柠檬水找零 406.根据身高重建队列
  • 基于java的餐厅点餐系统微信小程序ssm+论文源码调试讲解
  • Tomcat(133)Tomcat的SSL会话缓存故障排除
  • HTTP 范围Range请求
  • SQL分类与数据类型整理
  • Erlang语言的正则表达式
  • 自动化测试框架搭建-接口数据结构设计
  • NLP 基础理论和工具使用
  • C++实现设计模式---工厂方法模式 (Factory Method)
  • 科技快讯 | 抖音治理AI造假地震图片;投影仪也玩三折叠;京东发布“AI京医”大模型
  • XML 解析器:深入解析与高效应用
  • SpringBoot错误码国际化
  • 【源码解析】Java NIO 包中的 ByteBuffer
  • unittest VS pytest