在日常的开发中,我们经常会用到UIScrollView,然而,它是一个问题频出的控件,比如在nib中使用它就必须手动为它创建一个ContentView.当然了使用春代码的时候使用了懒加载机制使得它能够拥有一个contentView,今天我们不谈这个问题,我们来谈谈UIScrollView的事件拦截相关的知识.

  在进入正题之前,先补个知识点:响应链「Responder Chain」.iOS设备的屏幕上有很多的元素,当用户触发了一个事件之后:

  用户触发事件 ->系统框架UIKit创建一个包含该事件各种信息的事件对象 -> 把它加入到前台App的事件队列中 -> UIApplication响应该事件 -> 把该事件交给当前的window对象 (-> 根据不同的事件对象生成不同新对象)

  ①触摸事件 -> 传递新对象 -> 触发事件的View(hit-testing).

  ②摇动或者远程控制事件 ->window对象把摇动事件或者远程控制事件传递给第一响应者来处理.

接下来谈一下一个现象:

1>在UIScrollView上添加一个ContentView,在ContentView上添加几个Button,运行

  你会发现:点击按钮的时候会出现延迟现象,

2>设置delayContentsTouches为NO

  你会发现:在按钮上无法滑动ScrollView

3>自定义一个类,继承UIScrollView,重写方法- (BOOL)touchesShouldCancelInContentView:(UIView *)view;并且直接返回YES:
  你会发现,问题解决了.

转载于:https://www.cnblogs.com/Shreker/p/5039775.html

UIScrollView事件拦截相关推荐

  1. android 事件拦截 (Viewpager不可以左右滑动)

    以前没有做过真正的需求,所以从来没有觉得事件拦截分发处理有什么好懂的. 现在做需求了,真的是什么需求都有,你作为开发都要去研究实现.比如说,只能点不能滑动的viewpager.其实这都可以不用view ...

  2. android 拦截点击事件,Android事件拦截机制

    一直对事件拦截不是很清楚,读Android群英传的笔记,记录下. 要了解事件拦截,首先要了解触摸事件,触摸事件是捕获触摸屏幕后发生的事件.按一下屏幕通常会有几个事件发生,当按下屏幕,这是事件1.滑动了 ...

  3. 反思|Android 事件拦截机制的设计与实现,android组件化开发

    最顶层View直接持有最下层某个View的引用合理吗?答案是否定的.首先,这导致View层级依赖之间的混乱:其次,顶层View本身持有了最下层某个View的引用,则这之间若干个层级的View的targ ...

  4. android 拦截点击事件,Android双击事件拦截方法

    下文我们介绍两种双击事件拦截的方式 1.通过Android的事件分发机制进行拦截(dispatchTouchEvent) 话不多说,直接上代码: /** 判断是否是快速点击 */ private st ...

  5. Android:Touch事件拦截机制

    道长说了这么多自定义View,还没说自定义View会遇到什么问题,其实这个问题不止在自定义View中存在.在开发中遇到控件嵌套,堆叠都会出现,比如:点击子控件,子控件接收不到点击事件等等.这里道长简单 ...

  6. iOS事件拦截(实现触摸任意位置隐藏指定view)

    项目里有一个需求,类似新浪或者腾讯微博的顶部title栏的类别选择器的消失(在选择器展开的时候,触摸屏幕任何地方使其消失). 最开始的想法是当这个选择器(selectorView)展开的时候,在当前屏 ...

  7. 事件分发机制 事件拦截 滑动冲突 MD

    目录 事件分发机制分析案例 默认行为 试验 0 结论 dispatchTouchEvent 返回 true 试验 1 试验 2 结论 onInterceptTouchEvent 返回 true 试验 ...

  8. springboot—监听容器启动事件—拦截器及注册

    1.监听容器启动事件 2.拦截器

  9. html 冒泡事件拦截,Js 冒泡事件阻止

    一. 事件目标 现在,事件处理程序中的变量event保存着事件对象.而 event.target 属性保存着产生事件的目标元素.这个属性是 DOM API 中规定的,但是没有被所有浏览器实现 .jQu ...

最新文章

  1. 【硬件基础】个人感悟+C语言 引入头文件时引号括号的区别
  2. 读书笔记之《淘宝技术这十年》
  3. 预录取到计算机,预录取什么情况不录取 原因有哪些
  4. SQL OVER用法
  5. bzoj1088[SCOI2005]扫雷Mine
  6. 02-图像的几何变换
  7. java开发区块链_使用Java语言从零开始创建区块链
  8. hdu 1333水题
  9. 不同编码的MP4视频在各大游览器播放总结
  10. PS快速美白磨皮方法
  11. SAMBA+LDAP ERROR“smbd dead but pid file exists”
  12. win10 SystemParametersInfo 设置屏保 不好使_Acer 暗影骑士 N50-N92电脑如何重装win10?win10专业版系统重装教程...
  13. 扫雷游戏 (15 分)
  14. NLP领域大语言模型汇总
  15. 量子计算核心突破!Shor算法实现或使密码成摆设
  16. 值得看,为什么跨境电商一定要自建网站?
  17. 国际现货黄金换算须知
  18. 让雷军都压力山大的首位 00 后 CEO 抄袭了程序员的开源项目
  19. 21天学通C语言-学习笔记(3)
  20. Firewalld防火墙基础

热门文章

  1. python中max函数用法_Python中max函数用法实例分析
  2. scatter python_python数据可视化(matplotlib、scatter)
  3. java中的基本数据类型_Java中的基本数据类型和引用数据类型
  4. 数学--数论--鸽巢原理
  5. STL常用对象,不会搞得C++跟没学一样
  6. 计组—缓存Cache
  7. linux-shell命令之chgrp(change group)【更改群组】
  8. 【论文笔记】One Millisecond Face Alignment with an Ensemble of Regression Trees
  9. TensorFlow:实战Google深度学习框架(三)深层神经网络
  10. 使用Java解决您的数据科学问题