内容简介:当用户触摸屏幕时会产生若干个
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…
今天就总结到这里了,希望各位小伙伴多多提出宝贵意见,交流学习~
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
机器学习及其应用2007
周志华 编 / 清华大学 / 2007-10 / 37.00元
机器学习是人工智能的一个核心研究领域,也是近年来计算机科学中最活跃的研究分支之一。目前,机器学习技术不仅在计算机科学的众多领域中大显身手,还成为一些交叉学科的重要支撑技术。本书邀请相关领域的专家撰文,以综述的形式介绍机器学习中一些领域的研究进展。全书共分13章,内容涉及高维数据降维、特征选择、支持向量机、聚类、强化学习、半监督学习、复杂网络、异构数据、商空间、距离度量以及机器学习在自然语言处理中的......一起来看看 《机器学习及其应用2007》 这本书的介绍吧!