iOS解决嵌套在ScrollView中的TableView滑动手势冲突问题

  最近在迭代开发公司项目的时候遇到了一个问题,在可以左右切换标签视图的ScrollView中嵌套了两个TableView用于展示视图,感觉一切so easy的情况下,问题出现了,因为左右两个视图既可以实现标签切换,其中TableView还需要侧滑删除功能,那么问题来了,滑动手势懵逼了,这是要搞事情啊!他无法识别到底要做什么处理,因为滑动手势冲突了,下面简单介绍一下解决思路:

 

大致的项目需求如上图所示:

经过一番资料的查阅,解决办法就是继承自UIScrollView,重写UIScrollView类:

  第一步:继承自UIScrollView创建XMScrollView并遵守UIGestureRecognizerDelegate

  第二步:重写UIGestureRecognizerDelegate代理方法

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    if (gestureRecognizer.state != 0) {
        return YES;
    } else {
        return NO;
    }
}

  第三步:下面这两个属性必须有加

self.scrollView.delaysContentTouches = NO;
self.scrollView.canCancelContentTouches = NO

问题就这样迎刃而解了!写的比较烂,不喜勿喷!

原文地址:https://www.cnblogs.com/it-q/p/8882445.html

时间: 2024-10-15 04:03:55

iOS解决嵌套在ScrollView中的TableView滑动手势冲突问题的相关文章

当ViewPager嵌套在ScrollView/ListView里时,手势冲突如何处理?

有时我们需要将ViewPager嵌套在其他已经含有手势动作的ViewGroup里,如ScrollView,ListView时,会造成手势冲突,如表现为ViewPager向左划时,不小心向上移动了一点距离,ViewPager立刻回弹到原始位置. 主要问题出在ScrollView/ListView作为ViewPager的ParentView,会先接受到触摸信息,而且他们对上下滑动是会做出拦截动作,并接管触摸信息的向下传递,导致ViewPager滑动异常. 先看一种解决方式: public class

iOS开发拓展篇—xib中关于拖拽手势的潜在错误

iOS开发拓展篇—xib中关于拖拽手势的潜在错误 一.错误说明 自定义一个用来封装工具条的类 搭建xib,并添加一个拖拽的手势. 主控制器的代码:加载工具条 封装工具条以及手势拖拽的监听事件 此时运行程序,程序直接崩溃,报错如下: 说明:手势不会有superView方法,superView是UIView的方法,说明我们错误的把手势对象当成是UIView来用了. 调试查看出现问题的原因: 出现问题的原因: 说明:通过lastObject取出来的对象是手势,而不是xib,因此出现上面的错误. 把la

ScrollView中嵌入ListView,GridView冲突的解决(让ListView全显示出来)

ScrollView中嵌入原生ListView或GridView,会出现ListView,GridView显示不全的问题. 解决方法:重新构造一个ListView或GridView,重写OnMeasure()方法: // ListView 1 import android.widget.ListView; 2 3 public class MyListView extends ListView{ 4 5 public MyListView(android.content.Context cont

Listview或者GridView嵌套在ScrollView中只显示一行item解决方法。

页面里有ListView(GridView)和一些固定布局让他们一起在整个屏幕上滚动方法: (1)自定义ListView(GridView),重写onMeasure()方法,我以GridView为例(ListView只需要extends ListView)具体代码如下: package top.ant.view; import android.content.Context; import android.util.AttributeSet; import android.widget.Grid

解决android的ListView嵌套在ScrollView中不能被滚动的问题

使用滚动条容易带来一个后果,就是高度和宽度不受控制了, 之前就遇到一个已经有ScrollView的页面需要加个列表listView,然后就发现listView只看到前两行数据,下面的看不到,拉滚动条也只是滚动整个页面,而不是listview. 方法1:让外面的ScollView交出滚动权限,因为listview自身就有滚动条. 方法2:通过计算装在内容后的list高度,然后设置高度. 只要在你给你的listView设置适配器后,再重新设置listview的高度,思路是,算出每行的高度,给list

解决ambiguous symbol命名空间中类名、变量名冲突的问题

最近在将一个复杂的工程集成到现有的项目中.编译时发现,有的变量名冲突了,提示就是xxxx ambiguous symbol,并且在编译输出时,指明了两个文件当中特定的变量名或者类名相同.出现这个编译错误的原因是,在工程中加载了两个头文件,这两个头文件中包含相同的类名或者变量名,解决及避免出现此类错误的方法如下: 代码库尽量包含在一个命名空间中.在我们写一个大的程序时,一些变量可能会与其他工程造成重名,所以加命名空间是很有必要的:另外,在自己的代码库中命名的类名变量名尽量以代码库的名称开头,这样大

tableview 和手势冲突

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { // 输出点击的view的类名 NSLog(@"%@", NSStringFromClass([touch.view class])); // 若为UITableViewCellContentView(即点击了tableViewCell),则不截获Touch事件 if ([NSS

解决:ScrollView中嵌套ListView,使得listview上下滑动卡顿现象

效果图就是上面的那样!实现方式:上面是一个ViewPager实现的左右无限循环并带有自动轮播的banner.在banner图的下面是一个listview实现上拉加载的功能:但是在我实现的过程中我遇到了一个问题,就是整个页面的展示效果都已经实现,但是banner图连带下面的listview在上下滑动的时候出现卡顿的现象:当然之前也遇到了一个问题,就是我的banner图和listview一起放在了父控件ScrollView中,是的listview不能完全显示:那么就来解决这两个问题. 解决问题一:<

Android实践之ScrollView中滑动冲突处理

转载注明出处:http://blog.csdn.net/xiaohanluo/article/details/52130923 1. 前言 在Android开发中,假设是一些简单的布局.都非常easy搞定.可是一旦涉及到复杂的页面,特别是为了兼容小屏手机而使用了ScrollView以后,就会出现非常多点击事件的冲突.最经典的就是ScrollView中嵌套了ListView. 我想大部分刚開始接触Android的同学们都踩到过这个坑,这一篇文章就从近期做的一个项目讲起.然后在过程中提供一些解决冲突