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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/432835.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux内核设计与实现 怎么读,《Linux内核设计与实现》读书笔记(一)

第一次写读书笔记,有什么套路呢?还没来得及去学习。《linux kernel的设计与实现》真的是一本好书,里面的东西解答了很多工作中的疑问。如显示地调用schedule()进行调度,系统调用__syscalln(),一些数据结构函数经常在ke…

C++中正确使用PRId64

nt64_t用来表示64位整数,在32位系统中是long long int,在64位系统中是long int,所以打印int64_t的格式化方法是: [cpp] view plaincopy printf("%ld", value); // 64bit OS printf("%lld", value); // 32bi…

大话细说ORM -----(转)

什么是ORM? ORM,即对象关系映射(Object Relational Mapping)表示一种技术,用来把(对象模型)表示的对象映射到基于SQL的(关系模型)数据结构中去。 说得通俗点,就是在对象的属性与关系…

linux中权限的名词解释,Linux的基本权限和特殊权限

基本权限的类别访问方式(权限):-读写:允许查看内容-read r-写入:允许修改内容-write w-可执行:允许运行和切换-execute x对于文本文件:r:cat head tail lessw:vimx&#xff1a…

乱写

想写点东西,又不知道从何下笔。可是心情又觉得有些许不爽,那就漫无思绪想到哪写哪吧。 昨天加了一个HR的QQ,发了一封简历过去,她说她打开我的简历电脑就蓝屏了(无语),这管不着我简历的事吧。然后…

容器set和multiset

一、set和multiset基础 set和multiset会根据特定的排序准则&#xff0c;自动将元素进行排序。不同的是后者允许元素重复而前者不允许。 需要包含头文件&#xff1a; #include <set> set和multiset都是定义在std空间里的类模板&#xff1a; [cpp] view plaincopyprint? t…

linux centos命令语法,linux-centos7

# :-: linux常用的相关查询命令### **1.查看linux用户命令**cat /etc/passwd### **2.查看cpu,mem**grep "model name" /proc/cpuinfo 查看cpu核数cat /proc/cpuinfo 查看cpu详细信息grep MemTotal /proc/meminfo 查看内存总大小以及剩余大小…

oracle rac理解和用途扩展

Oracle RAC的优势在于利用多个节点&#xff08;数据库实例&#xff09;组成一个数据库&#xff0c;这样在保证了数据库高可用性的情况下更充分的利用了多个主机的性能&#xff0c;而且可以通过增加节点进行性能的扩展。实现Oracle RAC需要解决的关键问题就是多节点进行数据访问…

std::set作为一个有序集合

摘要&#xff1a;std::set作为标准库的一个关联容器&#xff0c;实现内部元素进行了排序&#xff0c;使用这特性可以对一组元素进行插入排序。std::set最初的设计是完成数学中“集合”的概念&#xff0c;它提供的接口也是如此。本文简单地介绍一下这一个标准库容器。 为了使用s…

linux查看某进程的连接,linux下查看指定进程的所有连接信息(转)

定位某个进程的网络故障时经常需要用到的一个功能就是查找所有连接的信息。通常查找某个端口的连接信息使用 ss 或者 netstat 可以轻松拿到&#xff0c;如果是主动与别的机器建立的连接信息则可以通过 lsof 命令来获得。例如我想要查看进程 frps 当前的所有连接信息&#xff0c…

SQLite多线程使用总结

SQLite支持3种线程模式&#xff1a;单线程&#xff1a;这种模式下&#xff0c;没有进行互斥&#xff0c;多线程使用不安全。禁用所有的mutex锁&#xff0c;并发使用时会出错。当SQLite编译时加了SQLITE_THREADSAFE0参数&#xff0c;或者在初始化SQLite前调用sqlite3_config(SQL…

linux rom打包工具,Android rom解包打包工具

eMMC主要是针对手机和平板电脑等产品的内嵌式存储器&#xff0c;由于其在封装中集成了一个控制器&#xff0c;且提供标准接口并管理闪存等优势&#xff0c;越来越受到Android手机厂商的青睐&#xff0c;以eMMC为存储设备的android手机&#xff0c;其文件系统(system、data分区)…

winform(C#)透明方法

1.设置窗体opacity属性&#xff1a; 2.窗体的BackColor和TransparencyKey属性设置相同的值&#xff1a; 2.加using System.Runtime.InteropServices;引用然后加上以下代码&#xff1a; [StructLayout(LayoutKind.Sequential)]public struct MARGINS{public int Left;public int…

ssh免密码登陆

1. 先去掉root登陆密码 passwd -d root 或者修改/etc/shadow 文件&#xff0c;将root那行&#xff0c;前两个冒号之间的加密过的密码去掉 2. 修改sshd_config文件 PermitEmptyPasswords yes

linux彻底卸载xfce,Ubuntu12.04LTS下如何安装和彻底卸载xfce4?

今天将Ubuntu12.04更新完了&#xff0c;用的网易的源&#xff0c;更新速度还是很给力的&#xff0c;平均500多K的下载速度。发现虚拟机上unity界面还是比较卡的&#xff0c;想换成gnome3.6试一下&#xff0c;结果rangerlee说xfce和lxde桌面很清爽&#xff0c;并且轻量占用内存少…

分布式缓存应用(转载的)

前言 Asp.Net中使用Couchbase——Memcached缓存入门篇 见http://www.cnblogs.com/aehyok/p/3436721.html 主要讲解Couchbase服务端的安装配置和客户端的引用调用&#xff0c;然后通过一个零配置的代码来完成最简单的代码实现调用。那么本次课先通过简单的配置文件进行配置&…

详细解析Linux /etc/passwd文件

在Linux /etc/passwd文件中每个用户都有一个对应的记录行&#xff0c;它记录了这个用户的一些基本属性。系统管理员经常会接触到这个文件的修改以完成对用户的管理工作。这个文件对所有用户都是可读的。但是Linux /etc/passwd文件中都有些什么内容呢&#xff1f; 它的内容类似下…

linux eclipse 头文件路径,Eclipse CDT标准库头文件设置

使用eclipse cdt开发C/C项目的时候&#xff0c;从eclipse官网下的linux下的专门版本在Fedora上能自动Discovery机器上的gcc/g头文件、符号之类的&#xff0c;但是在我用的slackware下却不行&#xff0c;需要手动添加标准库头文件路径/usr/include、/usr/local/include……&…

Jquery通过遍历数组给checkbox赋默认值

需求&#xff1a;有一个数组&#xff1a;(北京菜&#xff0c;粤菜)&#xff0c;checkbox如下&#xff1a; 现在想通过遍历这个数组&#xff0c;使数组里包含的值&#xff0c;在checkbox选中 代码&#xff1a; var flavors new Array([北京菜 , 粤菜]); $.each(flavors,functio…

/etc/fstab和/etc/mtab的区别!

etc/fstab文件的作用 记录了计算机上硬盘分区的相关信息&#xff0c;启动 Linux 的时候&#xff0c;检查分区的 fsck 命令&#xff0c;和挂载分区的 mount 命令&#xff0c;都需要 fstab 中的信息&#xff0c;来正确的检查和挂载硬盘。 /etc/mtab文件的作用&#xff1a;先看它的…