UIResponder相关

本文介绍了OC中响应事件的类UIResponder及其子类,指出其能响应触摸、运动、远程控制三种事件,重点介绍触摸事件。触摸事件发生时,UIKit创建UIEvent对象入队,UIApplication分发事件,通过hit - testing寻找hit - test view,若其不响应,事件沿响应者链传递。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UIResponder是OC中一个响应事件的类。UIApplication、UIView、UIViewController都是它的子类。UIWindow是UIView的子类,因此也能响应事件。

UIResponder能够响应的事件有三种:Touch Events(触摸事件)、Motion Events(运动事件)、Remote Control Events(远程控制事件)。

本文主要介绍触摸事件。

  触摸事件发生时,UIKit会创建一个UIEvent对象,并把它放入一个先进先出的事件队列中。当处理事件时,UIApplication对象会从队列头部取出一个事件对象进行分发。通常来说,UIApplication会把事件传递给key window对象,window会把事件传递给触摸事件发生的那个视图。这一视图被称为hit-test view,而寻找hit-test view的过程叫做hit-testing。  

  hit-testing很简单:它检测触摸事件是否发生在相关视图对象的边界之内。如果在,就递归检测它的所有子视图。包含触摸点且位于视图层次结构最底层的视图就是hit-test view。代码表示如下:

  如果hit-test view没有响应事件,那么事件会沿着一条响应者链(Responder Chain)进行传递。响应者链以first Responder开始,以UIApplication对象结束,链上的每个对象都是响应者。

参考资料:

  Event Handling Guide for iOS

  iOS事件分发机制(一) hit-Testing 

转载于:https://www.cnblogs.com/gattaca/p/6079032.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值