当前位置: 首页 > news >正文

Gesture Recognizers与触摸事件分发

转自 http://blog.csdn.net/chun799/article/details/8194893

 

一.Gesture Recognizers

Gesture Recognizers是在iOS3.2引入的,可以用来识别手势、简化定制视图事件处理的对象。Gesture Recognizers的基类为UIGestureRecognizer,这一个抽象基类,定义了实现底层手势识别行为的编程接口。在UIKit框架中提供了6个具体的手势识别类,用来识别常见的手势。这6个手势识别器类为:

  • UITapGestureRecognizer:用来识别点击手势,包括单击,双击,甚至三击等。
  • UIPinchGestureRecognizer:用来识别手指捏合手势。
  • UIPanGestureRecognizer:用来识别拖动手势。
  • UISwipeGestureRecognizer:用来识别Swipe手势。
  • UIRotationGestureRecognizer:用来识别旋转手势。
  • UILongPressGestureRecognizer:用来识别长按手势。

为了识别手势,需要将Gesture Recognizers关联到其检测触摸事件的view上,可以使用UIView的addGestureRecognizer:方法将手势识别器绑定到视图上。Gesture Recognizers在触摸事件处理流程中,处于观察者的角色,其不是view层级结构的一部分,所以也不参与responder chain。在将触摸事件发送给hit-test view之前,系统会先将触摸事件发送到hit-test view上绑定的或hit-test view父视图(superview)上绑定的Gesture Recognizers上。其流程大概如下图所示:

注:图中view与Gesture Recognizer的关系是,Gesture Recognizer关联在view或view的superview(可能多级)上。

二.Gesture Recognizers与事件分发路径的关系

Gesture Recognizers可能会延迟将触摸事件发送到hit-test view上,默认情况下,当Gesture Recognizers识别到手势后,会向hit-test view发送cancel消息,来取消之前发给hit-test view的事件。控制这个流程的是UIGestureRecognizer的三个属性

相关文章:

  • 批量上传工具
  • Mac Book Pro 374 2010 Mid 款升级10GB内存
  • HDU 2844 Coins (多重背包)
  • 回味基础
  • 【sehll学习】linux运维一个简单shell脚本监控系统内存
  • 利用WebClient上传参数及文件流到远程ashx服务
  • 配置 yum 源的两种方法
  • apache 配置防盗
  • android TabWidget 位置
  • 浅析selenium的page object模式
  • 用Python养一只DHT爬虫
  • 玩转 find -- 完整性的讲述及分析
  • 文件查看命令
  • 陶哲轩实分析 习题 13.5.5
  • 微信公众平台消息接口开发(9)骑行西藏自定义菜单
  • SegmentFault for Android 3.0 发布
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • Fastjson的基本使用方法大全
  • Java比较器对数组,集合排序
  • Java新版本的开发已正式进入轨道,版本号18.3
  • jquery ajax学习笔记
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Meteor的表单提交:Form
  • Mysql数据库的条件查询语句
  • PAT A1120
  • React Transition Group -- Transition 组件
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • supervisor 永不挂掉的进程 安装以及使用
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 今年的LC3大会没了?
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 微信支付JSAPI,实测!终极方案
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 用Python写一份独特的元宵节祝福
  • puppet连载22:define用法
  • 湖北分布式智能数据采集方法有哪些?
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • ( 10 )MySQL中的外键
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (超详细)语音信号处理之特征提取
  • (二十三)Flask之高频面试点
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (十六)一篇文章学会Java的常用API
  • (一)基于IDEA的JAVA基础10
  • (转) Android中ViewStub组件使用
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)菜鸟学数据库(三)——存储过程
  • (转)详解PHP处理密码的几种方式
  • .NET C#版本和.NET版本以及VS版本的对应关系