内容简介:当用户触摸屏幕时会产生若干个
1.基本概念:
-
UIEvent
:当用户触摸屏幕时,UIKit
会将这一操作封装成一个个的UIEvent
对象,该对象包含着一些处理事件所需要的信息 - 响应者:在
UIKit
中,所有直接或者间接继承UIResponder
类的都具有响应事件的能力(例如:UIApplication
、UIView
、UIViewController
和我们自定义的视图以及视图控制器),这些对象通常都被称为响应对象(也称为响应者,hit-testview) - 响应链:在一个App中,所有视图是按照树状结构进行组织的,除了根视图外,每个视图都有一个父视图,而每个视图都可以有0个或者多个子视图,而在这个树状结构构建的同时,也构建了一条条的事件响应链
当用户触摸屏幕时会产生若干个 UIEvent
对象, UIKit
会把 UIEvent
对象放到事件队列中,当需要处理事件的时候, UIApplication
会从事件队列头部取出一个 UIEvent
对象进行分发,找到可以处理该事件的响应者
2.寻找最终响应者过程
当手指触摸屏幕的时候,UIApplication通过从事件队列头中取出一个事件对象分发给UIWindow, 然后每一个视图通过调用hitTest:withEvent和pointInside:withEvent方法, 如pointInside:withEvent方法返回YES,则继续遍历该视图上的所有子视图, 直到找到最终响应视图,然后hitTest:withEvent方法逐级返回最终响应视图, 找到最终响应视图之后则会尝试让其处理这个事件,如果无法处理该事件, 则事件会被传递给下一个事件处理者,直到传递到AppDelegate,则事件会被丢弃。-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event -(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event /**当满足以下条件,返回视图层级中能响应触控点的最佳视图 self.hidden == NO; self.userInteractionEnabled = YES; self.alpha > 0.01;事件的触摸点在视图的bounds内 */复制代码
3.手势识别器
当我给 pupleView
重写了 touchsBegan:withEvent、touchsEnded:withEvent、
touchsMoved:withEvent、touchsCancelled:withEvent
方法,并且给 pupleView
添加了 UIGestureRecognize
r并点击,控制台打印的结果如下:
控制台打印的结果如下: XLPupleView touchesBegan XLPupleView touchesMoved handle Tap复制代码
说明:在识别一个触摸事件的时候,如果该视图有添加手势识别器,则手势识别器拥有更高优先级,优先处理事件。 其会先调用touchsBegan:withEvent、touchsMoved:withEvent方法和手势识别器对应响应方法,只有手势 识别失败了,才会触发响应链中的touchsEnded:withEvent方法,如果识别成功,则会触发touchsCancelled:withEvent 取消响应者链对触摸事件的响应。 也可以设置手势识别器中的cancelsTouchesInView属性,该属性默认为YES。 当设置为NO时,手势识别器识别到触摸事件之后不会发送touchesCancelled:withEvent取消响应链对触摸事件的响应, 这个时候手势识别器和hit-testview均响应触摸事件。复制代码
Demo下载地址: github.com/hlc0000/Res…
今天就总结到这里了,希望各位小伙伴多多提出宝贵意见,交流学习~
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
算法心得:高效算法的奥秘(原书第2版)
(美)Henry S. Warren, Jr. / 爱飞翔 / 机械工业出版社 / 2014-3 / 89.00
【编辑推荐】 由在IBM工作50余年的资深计算机专家撰写,Amazon全五星评价,算法领域最有影响力的著作之一 Google公司首席架构师、Jolt大奖得主Hoshua Bloch和Emacs合作创始人、C语言畅销书作者Guy Steele倾情推荐 算法的艺术和数学的智慧在本书中得到了完美体现,书中总结了大量高效、优雅和奇妙的算法,并从数学角度剖析了其背后的原理 【读者评价......一起来看看 《算法心得:高效算法的奥秘(原书第2版)》 这本书的介绍吧!