iOS 事件传递及响应过程

iOS 事件传递及响应过程

—->>事件到来——>>事件分发 ——>>事件响应


事件( Events)

官方文档( Events(iOS)) 是这样描述的:

Users manipulate their iOS devices in a number of ways, such as touching the screen or shaking the device. iOS interprets when and how a user is manipulating the hardware and passes this information to your app. The more your app responds to actions in natural and intuitive ways, the more compelling the experience is for the user.

1.触摸事件( Touch Events) (单点事件、多点触摸及各种手势)

2.晃动时间(Motion Events) (重力、加速度等传感器)

3.远程控制事件(Remote-Control Events)(线控耳机、AirPlay 等)


事件分发( Event Delivery)

触摸事件:触摸->硬件中断-> UIKit 封装成 UIEvent对象->当前运行的应用程序的事件队列 - >UIApplication 对象 - >key window - >Hit - Testing VIew

其他事件:key window - > First Responder

目的:

The ultimate goal of these event paths is to find an object that can handle and respond to an event. Therefore, UIKit first sends the event to the object that is best suited to handle the event. For touch events, that object is the hit-test view, and for other events, that object is the first responder.

方法:

- Hit-Testing Returns the View Where a touch Occurred (Touch)

The hit-test view is given the first opportunity to handle a touch event. If the hit-test view cannot handle an event, the event travels up that view’s chain of responders as described in “ The Responder Chain Is Made Up of Responder Objects ” until the system finds an object that can handle it.

- The Responder Chain Is Made Up of Responder Objects (Motion Or R-C)


事件响应

注意:

hitTest:withEvent: 方法将会忽略( hidden = YES) 的视图

禁止用户操作( userInteractionEnabled = NO) 的视图

以及 alpha 级别 小于0.01 (alpha < 0.01) 的视图

如果一个子视图的区域超过父视图的 bound 区域(父视图的 clips ToBounds 属性为 NO, 这样超过父视图 bound 区域的视图的内容也会显示),那么正常情况下对子视图在父视图之外区域的触摸操作不会被父视图识别,因为父视图的 pointInSide:withEvent:方法会返回 NO, 这样子就不会继续向下便利子视图了.当然也可以重写pointInSide:withEvent:方法 来处理这种情况.

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-05 17:26:36

iOS 事件传递及响应过程的相关文章

IOS事件传递及响应过程

IOS事件传递及响应过程 –>事件到来 –>事件分发 –>事件响应 事件(Events) 1.触摸事件(Touch Events)(单点触摸.多点触摸及各种手势) 2.晃动事件(Motion Events) (重力.加速度等传感器) 3.远程控制事件(Remote-Control Events) (线控耳机.airplay) 事件分发(Event Delivery) 触摸事件:触摸->硬件中断->UIKit封装成UIEvent对象(针对触摸事件)-> 当前运行的应用程序

事件传递之响应链(Event Delivery: The Responder Chain)【转】

当你设计App时你可能需要动态的响应事件.例如,一个触摸事件可能发生在屏幕上不同的对象中,你需要决定哪个对象来响应这个给定的事件,理解对象如何接收事件. 当用户触发的一个事件发生,UIKit会创建一个包含要处理的事件信息的事件对象.然后她会将事件对象放入active app’s(应用程序对象,每个程序对应唯一一个)事件队列.对于触摸事件,事件对象就是UIevent对象封装的一系列触摸集合.对于动作事件,这个事件对象依赖于使用的framework和你关心哪种动作事件. 事件通过特殊的路径传递直到被

iOS 事件传递响应链

iOS中加载的时候会先执行main函数 int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } } 根据main函数的参数加载UIApplication->AppDelegate->UIWindow->UIViewController->superView-&g

UI事件传递和响应

点击屏幕发生了什么事件怎么传递? hitText:withEvent:方法系统实现 响应链 原文地址:https://www.cnblogs.com/weiboyuan/p/9055207.html

IOS事件传递和处理中的细节问题

1. 事件处理分两步: 1)寻找合适的相应对象,这个时候是从父控件到子控件的: 2)对事件进行处理 由子空间到父控件 注意点:如果连个视图是同级的关系,那么先加到View上的视图是后相应的(如果利用StroyBoard添加View,也是后先加上的后响应).此时可以重写父类的Point:inside 和 Hit:test方法来试验 1 -(UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event 2 { 3 4 5 UIView * res

iOS事件响应链

@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); 事件传递之响应链 当你设计App时你可能需要动态的响应事件.例如,一个触摸事件可能发生在屏幕上不同的对象中,你需要决定哪个对象来响应这个给定的事件,理解对象如何接收事件. 当用户触发的一个事件发生,UIKit会创建一个包含要处理的事件信息的事件对象.然后她会将事件对象

Event Handling Guide for iOS——由触摸事件传递想到的

先帖官方文档地址 https://developer.apple.com/library/ios/documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/event_delivery_responder_chain/event_delivery_responder_chain.html Event Delivery: The Responder Chain——事件传递:响应链 (未完待续)

iOS开发中的事件处理(二)-事件传递,响应者链条-

转载请注明出处:http://blog.csdn.net/whjForWork/article/details/44926833 事件处理的事件传递 简介: 发生触摸事件后,系统会将该事件加入到一个由UIApplication管理的事件 队列中,UIApplication会从事件队列中取出最前面的事件,并将事件分发下去以便处理,通常,先发送事件给应用程序的主窗口(keyWindow) UIView不接受触摸事件的三种情况: 不接收用户交互 userInteractionEnabled = NO

android事件传递机制详解

本篇内容将结合Android源码来分析Android的事件传递机制.众所周知,点按.滑动.触摸构成了Android等智能设备的基本操作,几乎所有的应用都通过对触摸屏的操作来进行应用程序的使用.那么,在Android中,触摸事件是如何响应及传递的呢,通过本篇内容你将有一个初步的了解. 实验环境 OS X 10.9 Eclipse(ADT) Android源码版本:API Level 19(Android 4.4) Android事件构成 在Android中,事件主要包括点按.长按.拖拽.滑动等,点