传递UIScrollView的滑动事件到其子视图中-程序员宅基地

技术标签: 移动  uiscrollview  ios  

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

我的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的指针

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u010441187/article/details/44098583

智能推荐

Centos6.5密码过期时间设置 /etc/login.defs_centos login.defs-程序员宅基地

文章浏览阅读1w次。Linux下对于新添加的用户,用户密码过期时间是从 /etc/login.defs 中 PASS_MAX_DAYS 提取的,普通系统默认就是99999,而有些安全操作系统是90。更改此处,只是让新建的用户默认密码过期时间变化,已有用户密码过期时间仍然不变。[root@linuxidc ~]# chage --helpUsage: chage [options] userOp_centos login.defs

自己动手做一个USB摄像头--转载_linux 系统下自制usb 摄像头模组-程序员宅基地

文章浏览阅读9.4k次,点赞9次,收藏52次。手里有一块AT32的开发板和一个OV2640摄像头模块,因为做智能车模型需要一个摄像头,就想能不能废物利用一下,用这俩做一个即插即用的USB摄像头,能够直接用在树莓派的Linux系统上,而不需要在Linux上再另外开发摄像头驱动了。但真正做起来之后才发现,淘宝上几十块一个的摄像头开发起来竟然这么麻烦,涉及到了很多东西,完完全全是一个大坑,断断续续做了两个来月才总算实现了。期间一度想直接下单一个,又清晰又稳定,但想想还是不甘心,谁让当初就这么下手了呢。。o(╥﹏╥)o在本文中,我将从下面四个._linux 系统下自制usb 摄像头模组

rk平台 hdmiin的相关介绍以及调试_rk mipi转hdmi-程序员宅基地

文章浏览阅读4.7k次,点赞4次,收藏25次。主要介绍rk平台hdmiin的调试流程以及常见问题_rk mipi转hdmi

2022年全网最细 AndroidStudio 安装配置学习笔记_android studio 2022-程序员宅基地

文章浏览阅读3.2k次,点赞4次,收藏22次。超详细的 AndroidStudio 安装笔记_android studio 2022

cache(三)——Cache实例的get与set_cache.getcache-程序员宅基地

文章浏览阅读7.6k次。在Spring中配置了Ehcache,由EhCacheManagerFactoryBean创建并且启用了一个CacheManager实例来管理Cache,那么CacheManager是怎么管理Cache的?Cache是由谁创建的?org.springframework.cache. CacheManager:源码public interface CacheManager { @N..._cache.getcache

安全函数之缓冲区溢出_安全函数缓冲区大小-程序员宅基地

文章浏览阅读2.4k次。公司的大佬说之前某大厂为了安全函数的替换耗资10亿美金。可想安全很重要,安全函数很重要,对于我们做系统软件的来说很重要。为什么要替换成安全函数,这里面就涉及到了一种漏洞攻击,缓冲区溢出攻击。缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上。理想的情况是:程序会检查数据长度,而且并不允许输入超过缓冲区长度的字符。但是绝大多数程序都会假设数据长度总是与所分配的储存空间相匹配,这就为缓冲区溢出埋下隐患。操作系统所使用的缓冲区,又被称为**“堆栈”**,在各个._安全函数缓冲区大小

随便推点

linux环境openjdk使用arthas_arthas openjdk-程序员宅基地

文章浏览阅读2.7k次,点赞3次,收藏2次。linux环境下使用openjdk运行arthas会报jps命令无法找,或者tools.jar无法找到。_arthas openjdk

html+css商城主页面_好看的下单界面html和css-程序员宅基地

文章浏览阅读1.2w次,点赞27次,收藏298次。小米商城-主页面(静态页面)非常适合在学习前端知识的同学们的知识巩固和细节的一个项目,由于CSS代码有点多不好展示可以下载我的CSS源代码:小米商城小米商城-主页面(静态页面)1.HTML代码2.CSS代码:话不多说先上效果图1.HTML代码<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>小米闪购 - 小米商超</title> _好看的下单界面html和css

Vue中的scoped和/deep/_vue scoped deep什么时候加-程序员宅基地

文章浏览阅读416次。scoped私有作用域 作用: 让当前样式只作用于当前组件而不污染全局,scoped通过使用 PostCSS 来实现以下转换:<style scoped>.example { color: red;}</style><template> <div class="example">hi</div></template>转化为:<style>.example[data-v-f3f_vue scoped deep什么时候加

【服务器】服务器上后台运行python程序_安装在服务器上的程序怎么运行-程序员宅基地

文章浏览阅读6.9k次,点赞3次,收藏12次。一直是pycharm运行服务器上代码,但存在问题:本机电脑休眠则程序停止运行。但深度学习代码一跑一整天,不小心关了几次后很难受实习老师向我介绍了nohup,完美解决了这个问题此外,在服务器上跑代码时,直接在命令行运行代码,常常遇到代码还没跑完却因为网络不稳定等异常终止的问题,所以可以通过nohup指令将代码后台执行,也便于同时运行多个程序。还可以用它来下载torch那种,需要安装几个小时的包_安装在服务器上的程序怎么运行

数据库基础(常见面试题)_1.书籍表(books) book id,book namecreatdate,lastmodify-程序员宅基地

文章浏览阅读6k次,点赞2次,收藏8次。数据库基础(面试常见题)一、数据库基础1. 数据抽象:物理抽象、概念抽象、视图级抽象,内模式、模式、外模式2. SQL语言包括数据定义、数据操纵(Data Manipulation),数据控制(Data Control)数据定义:Create Table,Alter Table,Drop Table, Craete/DropIndex等数据操纵:Select ,insert,u_1.书籍表(books) book id,book namecreatdate,lastmodifydatedecription 001,三个

PIC16F877A与Proteus仿真-24C01驱动仿真_24c01c是个什么器件-程序员宅基地

文章浏览阅读1k次。24C01驱动仿真24C01C 是一款 1K 位串行电可擦除 PROM,电压范围为 4.5V 至 5.5V。 该器件被组织为具有 2 线串行接口的 128 x 8 位存储器的单个块。 低电流设计允许最大运行。 待机电流和活动电流分别仅为 5 µA 和 1 mA。 该器件具有最多 16 字节数据的页面写入能力,并且字节和页面写入的快速写入周期时间仅为 1 ms。 功能地址线允许在同一总线上连接多达 8 个 24C01C 设备,用于多达 8K 位的连续 EEPROM 存储器。 该器件采用标准 8 引脚 PDI_24c01c是个什么器件

推荐文章

热门文章

相关标签