在开发项目时,遇到了一个问题:

我的UIScrollViewOut中嵌入了一个UIScrollViewIn,

当我想要拖动UIScrollViewIn时,UIScrollViewOut却动了,而UIScrollViewIn没有动。但是只要按住UIScrollViewIn一会再拖动,UIScrollViewIn就可以滑动。

网上查阅UIScrollView的原理:

UIScrollView重载了hitTest方法,当手指touch的时候,UIScrollView会拦截所有event,然后等待150ms,在这段时间内,如果没有手指没有移动,当时间结束时,UIScrollView会发送tracking event到子视图上,并且自身不滑动。在时间结束前,手指发生了移动,那么UIScrollView就会进行滑动,从而取消发送tracking。

看来是UIScrollViewOut的问题。直接拖动UIScrollViewIn,此时touch时间在150ms以内,UIScrollViewOut会认为是拖动自己,从而拦截了event,导致UIScrollViewIn接受不到滑动的event。但是只要按住UIScrollViewIn一会再拖动,此时此时touch时间超过150ms,因此滑动的event会发送到UIScrollViewIn上。

期间试过几种方法,只有一种可行,就是重写UIScrollViewOut的hitTest方法:当滑动UIScrollViewIn时,使UIScrollViewOut不可滑动。

- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{UIView* result = [super hitTest:point withEvent:event];if ([result.superview isKindOfClass:[UIScrollViewIn class]]){self.scrollEnabled = NO;}else {self.scrollEnabled = YES;    }return result;
}

PS:

试过几种方法都不行,例如:修改UIScrollViewIn为firstResponder;重写UIScrollViewOut中hitTest方法,永远返回UIScrollViewIn的指针

转载于:https://www.cnblogs.com/yangz/p/3537459.html

[原创]传递UIScrollView的滑动事件到其子视图中相关推荐

  1. 如何利用自定义的事件,在子组件中修改父组件里边的值?

    如何利用自定义的事件,在子组件中修改父组件里边的值? 这是一篇好文章,佩服博主的思维:本文出自http://www.cnblogs.com/padding1015/ 关键点记住:三个事件名字 步骤如下 ...

  2. android listview ontouchlistener,Android ListView监听滑动事件的方法(详解)

    ListView的主要有两种滑动事件监听方法,OnTouchListener和OnScrollListener 1.OnTouchListener OnTouchListener方法来自View中的监 ...

  3. 让超出自己视图范围的子视图响应事件

    有时需要让子视图的位置超出父视图,这时子视图不会响应点击事件,在父视图中实现这个方法,可以让子视图超出的部分也响应点击事件 父视图需要是view的子类 这个方法可以判断出自己的子视图,和子视图的子视图 ...

  4. 22、Camunda 补偿事件、事务子流程、分布式事务一致性

    Camunda 补偿事件.事务子流程.分布式事务一致性 总结 补偿事件 Compensation Event 事务子流程 事务子流程中如果有取消事件,必须要有边界取消中断事件 事务子流程外部可获取取消 ...

  5. iOS一行代码让你的应用中UIScrollView的滑动与侧滑返回并存

    侧滑返回是iOS系统的一个很贴心的功能,特别是在大屏手机上,单手操作的时候去按左上角的返回键特别不方便.当我在使用一个APP的时候,如果控制器不能侧滑返回,我会觉得这个APP十分不友好...这款产品在 ...

  6. 【Android 事件分发】ItemTouchHelper 简介 ( 拖动/滑动事件 | ItemTouchHelper.Callback 回调 )

    Android 事件分发 系列文章目录 [Android 事件分发]事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) [Andr ...

  7. uniapp实现页面左右滑动,上下滑动事件

    实现代码: <view class="" @touchstart="touchstart" @touchend="touchend"& ...

  8. android 解决ListView点击与滑动事件冲突

    如果你的ListView的Item有滑动功能,但又点击Item跳转到其它activity,这样若是在Adapter里面写点击事件是会导致滑动事件获取不到焦点而失效: 解决方法:不要在adapter里面 ...

  9. 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 四 | View 事件传递机制 )

    Android 事件分发 系列文章目录 [Android 事件分发]事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) [Andr ...

最新文章

  1. hls fifo_【FCCM2020】HLS 高手对比 Verilog 高手,到底输哪了?
  2. MATLAB中的三角函数单位问题
  3. 使用socket获取网卡信息
  4. 删除 jar 的 asset_【unity游戏开发】SDK学习(1)-C#与jar交互
  5. ruby elixir_如何使用Elixir和Phoenix快速入门构建CRUD REST API
  6. C++之整理一些最近看书的收获
  7. java jdk 的环境变量_Java JDK14(Java 14)在Windows上安装与环境变量配置
  8. 虚拟机更新为阿里数据源
  9. Java中 intValue,parseInt,Valueof 这三个关键字的区别
  10. eemd优缺点_改进EEMD算法在心电信号去噪中的应用
  11. 怎样使用思维导图做计划?分享5个思维导图做计划的模板
  12. 2022-2028年中国抽水蓄能电站设备制造行业市场竞争态势及发展趋向分析报告
  13. 高位在前低位在后是啥意思_精喹禾灵原药报价在25.5万元/吨高位,草甘膦原药保持2.5万元/吨...
  14. ADIS16488与单片机SPI通信返回0xFFFF的问题解决方法
  15. 利用selenium和python 爬虫网站代码
  16. 景区怎么防止年票卡多人使用?
  17. 分享一个找找外文书籍和资源(源代码)的网站
  18. 计算机网络(中科大郑烇)第四章笔记
  19. java 分析excel模板,java 根据excel模板导出excel
  20. App增量更新解决方案

热门文章

  1. jeecms添加站点
  2. NodeMailer
  3. 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁
  4. Javascript 获取和设置日期
  5. HDU1232——通畅工程(并查集)
  6. 一款研发管理软件的对象标签介绍
  7. VC6下使用WebLink控件
  8. linux火狐浏览器49.0安装教程,火狐浏览器Linux最新版下载
  9. oracle 执行计划 ppt,oracle查看执行计划的方法
  10. cognos java api_Cognos API Connection