问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

UITableView嵌入UIScrollView,左滑手势冲突和多选删除问题

发布网友 发布时间:2022-12-24 06:37

我来回答

1个回答

热心网友 时间:2023-09-17 13:56

1、UIScrollView上有两个子控件UITableView(分别称作table1,table2)水平布局,作为左右滑动的分页
2、第一个UITableView的cell元素支持左滑弹出删除按钮删除和可选择删除功能

1、table1元素左滑时UIScrollview会将该手势捕获导致左滑删除按钮不显示
2、进入编辑模式table1需要有可以选择的功能,table1编辑模式下的cell选中和不选中的图片需要替换
3、左滑删除的图片需要替换
4、ios11之前和ios11之后cell的删除左滑删除按钮弹出后层级有变化

1、创建UIScrollView的拓展类,并重写shouldRecognizeSimultaneouslyWithGestureRecognizer方法,该方法返回YES表示手势向下传递

   开始左滑时需要让uiscrollView不能滚动,结束删除编辑后需要让uiscrollview能够滚动。开始左滑和结束删除编辑会回调下面两个方法,beginEditingBlock和endEditingBlock分别是禁止滚动和允许滚动方法。

     点击右上角编辑按钮tableview进入编辑状态,此时可以多选cell

     此时可以响应tableview的didselect和didDeselect方法,用NSMutableSet数组保存是否选中的元素index,在显示的时候根据是否选中显示我们自定义的图片

     实现editActionsForRowAtIndexPath回调,编辑左滑按钮数组,可以实现多个左滑按钮,此处只实现删除按钮

     ios11之前,可以在自定义的cell里实现layoutsubviews方法,找到删除按钮控件并替换图片。到了ios11之后左滑cell删除按钮的视图层级已经不在cell里面,所以不能用此方法去重新设置删除按钮图片
我们来看下左滑时cell的层级,以项目中聊天元素McChatCell左滑为例,测试机ios10的左滑cell层级:

UITableViewCellActionButton是左滑出现的按钮层级,它在MCChatCell的层级下面,是UITableViewCellActionButton这个视图。
测试机ios13的左滑cell层级:

ios11之后左滑导致整个cell被包裹在UITableViewCellSwipeContainerView这个控件里面,UISwipeActionStandardButton是左滑出现的删除按钮视图。

    明显可以看到左滑出删除按钮时测试机ios10系统删除按钮在自定义cell层级内,但是测试机ios13的删除按钮层级和自定义cell处于同一层层级,所以ios11之后不能使用重写自定义cell的layoutsubviews方式去修改删除按钮的图片。

     ios11之后可以直接实现uitableview的代理trailingSwipeActionsConfigurationForRowAtIndexPath便可以实现删除图片的自定义

     做这个模块功能踩了很多坑,主要是uitableview的代理和一些处理方法在系统升级后有了改动,cell左滑后层级也有变化,在修改删除按钮和多选按钮图片的方式也要做响应修改。而且table的一些代理方法达到的效果有重叠,比如trailingSwipeActionsConfigurationForRowAtIndexPath和editActionsForRowAtIndexPath实现点击删除按钮方法,但是trailingSwipeActionsConfigurationForRowAtIndexPath只有在ios11之后才有效,而且如果不实现editActionsForRowAtIndexPath这个方法cell左滑也不会出现删除按钮效果,所以ios11之后这两个方法都需要实现,这些很容易让人迷惑

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
谁告诉我一下,韩语中,“遵命”怎么说 想开个甜品店,不知道哪里可以学习呢 如何取消微信新号绑定的手机号? 翼支付-翼建钟情活动内容是什么? 怎么参加翼支付“翼建钟情”活动? 翼支付--翼建钟情立减10元-建行这次活动有具体名额限制吗? 西凤酒是哪里的 货车总重量不超过二十吨就不算超载吗? 自卸货车上装有二十多吨货已经有四五天了对货车能伤害哪个部位? 如何回复别人的"忙里偷闲"? 安装Appsync for ios 5.0+ 因所依赖的软件包未找到或存在冲突软件包,操作无法完成 - 信息提示 平凡岁月第几集朵朵不离婚了 广州北京路浪琴专卖店在哪里 广州汇太广场有浪琴专柜吗? 广州浪琴专柜地址 今期当头请看猴中奖,皇家子弟多富贵,粉蝶戏弄美人钗。猜一生肖 国际货币的功能 功能是什么 淘宝线下代购现在怎么加盟? 怎么加盟淘宝代购 千古金丹大道还看今朝 文字搬运工:煌煌北凉镇灵歌 《雪中杂谈论价值观》 一个关于梦的PPT 故乡女富豪撤资多少集 英雄联盟拉黑有什么用? matlab一词来自的缩写 MATLAB是什么的缩写? 乌鬃鹅和狮头鹅区别 三洲黑鹅的介绍 南渡江源头到底在哪 员工食堂座谈会目的和意义 中国手机银行验证签名失败 分期乐逾期一天是不是以后都不能用了? 请问这个漫画软件的名字叫什么? 把中文译成英文 谁能教我弄弄博客 手机号码的密码是什么 手机号密码有什么用? 苹果怎么解散微信群聊 异地公积金缴存证明和明细怎么开 重度γ怎么算 液体的重度怎么算 几家飞机组合成一个大机器人的动画片 有一部老动漫片,毎有危险,大喊合体,几架飞机组合成一个机器人,求片名 鞋子欧码是啥意思 有五个战士,可以操控飞机,飞机可以合体的那个类似奥特曼的是什么电视剧 手机微信上不去怎么回事 excel表格全选的快捷键是什么,excel表格表格全选的快捷键是什么?_百 ... 阿尔及利亚人移民到中国永久居住要办什么手续以及手续时间和花多少钱?