问答文章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之后这两个方法都需要实现,这些很容易让人迷惑

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

1、UIScrollView上有两个子控件UITableView(分别称作table1,table2)水平布局,作为左右滑动的分页 2、第一个UITableView的cell元素支持左滑弹出删除按钮删除和可选择删除功能 1、table1元素左滑时UIScrollview会将该手势捕获导致左滑删除按钮不显示 2、进入编辑模式table1需要有可以选择的功能,table...

ios scollview 嵌套tableview,怎么识别cell的左滑手势

当你把scrollView滑到最边上(左或右)的时候,当你继续做滑想要让cell接收左滑手势的时候,这时滑动删除的事件被底部的UIScrollview给响应了,cell根本拿不到这个滑动手势。tableView是UIScrollview 的子类,cell里面的ContentView好像在iOS7.0之后也是UIScrollview ,再加底部一个UIScrollview,这滑动手势事...

iOS手势冲突(JXCategoryView滚动手势与侧滑、UITableView又划删除)

看到这个我就知道怎么弄了,咱们可以自定义一个自定义UIScrollView或UICollectionView 在里面实现手势的控制,我这里初始化 [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self] 因此需要自定义一个 UIScorllView 来控制手势,让它兼容多种手势共存 1.Servi...

调整UITableView手势跟随页面整体滑动总结

1、判断滑动的 ListView 的frame的y值是否已经超出规定范围,超出就不再处理滑动,我的实现是小于0就不再处理滑动。2、tableview的偏移量必须是小于0的这也才能处理滑动,不然会造成 tableview 和 listview 一起滑动的效果,很不自然。上面1、2条件必须放在一起使用,才能保证滑动手势和 view 本身的手势...

为什么把uitableview视图增加到uiscrollview视图上出错

http://rralun.blog.163.com/blog/static/103904296201311123030667/ 最近优化工程,遇到一个很棘手的问题,就是uitableview的内容视图下移,如图所示 ios7 uitableview内容视图下移 - Ameast - Dream 我左右两个tableview设置的起始坐标是一样的,但是相对于右边tableview而言,左边的tableview的内容视图明显...

tableView嵌套tableView 支持左右滑动 上下联动

详细内容:我是需要做一个像iphone上 空间主页面那个效果:但是 空间里好像是用整个一张uiscrollview实现的但我想利用重用机制,在下面用一个scrollView,然后scrollView里加一个TableView所以这里就有一个上下滑事件重叠的问题创建的时候,tableView.frame=(0,200,320,460);并且tableView的上下滑动事件交给...

如何在ScrollView滑动的瞬间禁用拖拽手势

在UIScrollView滑动的瞬间禁用pan手势,可以防止用户按着屏幕不放后导致出现的一些莫须有的bug.复制代码/// ViewController.m// TableViewDemo/// Created by XianMingYou on 15/2/23.// Copyright (c) 2015年 XianMingYou. All rights reserved.//#import "ViewController.h"@interface View...

UIScrollView及其子类的嵌套联动

如果用UICollectionView实现,当手动滚动索引指示器,当把选中的索引滚出屏幕显示范围,再点选别的,此时可能会产生由于复用引发的崩溃和选中状态错乱,要进行判空处理,swift中可以设置cell为Optional可选型类型。该控制器内的滚动视图可以是UIScrollView,也可以是UITableView,就可以将整个containerView部分添加...

UITableView和UICollectionView实现自定义滚动动画

首先我们先实现实际动画的类 ScrollViewAnimator 。我们用OC的runtime知识动态为分类添加属性方便使用 动画缓冲函数的实现可以参考 http://robertpenner.com/easing/ 。具体实现例子在 Demo 中 http://robertpenner.com/easing/ https://blog.csdn.net/S_clifftop/article/details/89490422 https://zs...

UIPanGestureRecognizer和UIScrollView冲突了 怎么破

把下面这段加进去 //解决cell手势和uitableview下滑的冲突 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { if ([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) { // Find the...

android手势冲突 联想手机接电话和手势冲突 三星pay和手势冲突 手势和微信语音冲突 华为手势导航和微信冲突 手势冲突 部落冲突鄙视手势阵阵 明日方舟全面屏手势冲突 ios重复手势
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我在微软官网下了一个vista虚拟镜像,后缀是.vhd,请问怎么用呢?_百度知 ... 千锤百炼是形容词吗 千锤百炼怎么解释 Photoshop作印章 选完椭圆 就是打不出来字 有一个小圆一闪一闪的 切 ... 凸透镜成像时为什么人眼在蜡烛的另一侧看不到蜡烛 棕色光面牛皮鞋怎么清洗? 物业接管单位对建设单位提出的接管验收申请应该几天审核完毕 2024年中考改革有哪些内容和特点呢? 女方起诉离婚流程和费用男方家暴的规定是什么? 公章备案需要什么资料? 安装Appsync for ios 5.0+ 因所依赖的软件包未找到或存在冲突软件包,操作无法完成 - 信息提示 平凡岁月第几集朵朵不离婚了 广州北京路浪琴专卖店在哪里 广州汇太广场有浪琴专柜吗? 广州浪琴专柜地址 今期当头请看猴中奖,皇家子弟多富贵,粉蝶戏弄美人钗。猜一生肖 国际货币的功能 功能是什么 淘宝线下代购现在怎么加盟? 怎么加盟淘宝代购 千古金丹大道还看今朝 文字搬运工:煌煌北凉镇灵歌 《雪中杂谈论价值观》 一个关于梦的PPT 故乡女富豪撤资多少集 英雄联盟拉黑有什么用? matlab一词来自的缩写 MATLAB是什么的缩写? 乌鬃鹅和狮头鹅区别 三洲黑鹅的介绍 南渡江源头到底在哪 员工食堂座谈会目的和意义 中国手机银行验证签名失败 分期乐逾期一天是不是以后都不能用了? 请问这个漫画软件的名字叫什么? 把中文译成英文 谁能教我弄弄博客 手机号码的密码是什么 手机号密码有什么用? 苹果怎么解散微信群聊 异地公积金缴存证明和明细怎么开 重度γ怎么算 液体的重度怎么算 几家飞机组合成一个大机器人的动画片 有一部老动漫片,毎有危险,大喊合体,几架飞机组合成一个机器人,求片名 鞋子欧码是啥意思 有五个战士,可以操控飞机,飞机可以合体的那个类似奥特曼的是什么电视剧 手机微信上不去怎么回事 excel表格全选的快捷键是什么,excel表格表格全选的快捷键是什么?_百 ... 阿尔及利亚人移民到中国永久居住要办什么手续以及手续时间和花多少钱?