Event Delivery: 事件处理逻辑
来源:互联网 发布:淘宝卖家必备手机软件 编辑:程序博客网 时间:2024/05/26 12:04
当用户产生一个Event事件的时候,UIKit会创建一个event对象,里面包含处理这个对象所需要的信息。然后将该对象放置在active app(一个程序对象用来初始化用户事件链路并全权管理运行中的程序)的事件队列里面。
事件处理过程是按照一个指定的栈模式,直到有一个对象可以处理。单例的UIApplication对象会手相在队列顶部取出这个事件并派发下去处理;典型的会将事件发送到应用的关键对象Window(保存屏幕矩形区域内的图形内容并在事件派发过程中扮演一个重要角色)
Window将event派发给一个初始对象来处理:
Touch Event:window会首先尝试将事件派发给发生touch事件的view
Motion and remote control events: window首先发送shaking-motion 或 remote control event事件给第一个responder来处理。
Hit-Testing:用来找到接受Touch事件的view;当发送touch事件时,iOS会首先找到边界内的相关View,然后再逐个排除并递归子view,直到找到最小的view,就是要找的hit-test view。 hitTest:withEvent:方法会返回这个hit-test view并返回指定的CGPoint和UIEvent。这个方法首先会调用 pointInside:withEvent:来判断是否在这个view的边界内,并返回YES/No来决定是否递归往下。
Responder chain:如果初始对象不处理这个事件,UIKIt就会分发这个事件给链上的下一个响应者。每一个链上的对象都可以决定是否处理这个事件。如果不处理则调用 nextResponder分发给下一个响应对象,知道该事件被处理或者没有更多的responder。
事件处理过程是按照一个指定的栈模式,直到有一个对象可以处理。单例的UIApplication对象会手相在队列顶部取出这个事件并派发下去处理;典型的会将事件发送到应用的关键对象Window(保存屏幕矩形区域内的图形内容并在事件派发过程中扮演一个重要角色)
Window将event派发给一个初始对象来处理:
Touch Event:window会首先尝试将事件派发给发生touch事件的view
Motion and remote control events: window首先发送shaking-motion 或 remote control event事件给第一个responder来处理。
Hit-Testing:用来找到接受Touch事件的view;当发送touch事件时,iOS会首先找到边界内的相关View,然后再逐个排除并递归子view,直到找到最小的view,就是要找的hit-test view。 hitTest:withEvent:方法会返回这个hit-test view并返回指定的CGPoint和UIEvent。这个方法首先会调用 pointInside:withEvent:来判断是否在这个view的边界内,并返回YES/No来决定是否递归往下。
Responder chain:如果初始对象不处理这个事件,UIKIt就会分发这个事件给链上的下一个响应者。每一个链上的对象都可以决定是否处理这个事件。如果不处理则调用 nextResponder分发给下一个响应对象,知道该事件被处理或者没有更多的responder。
- Event Delivery: 事件处理逻辑
- 事件(event)的逻辑
- 事件分发:响应链(Event Delivery: The Responder Chain)
- Event事件处理
- mysql event 事件处理
- SDL Event Handling 事件处理
- 事件传递之响应链(Event Delivery: The Responder Chain)[译]
- 事件传递之响应链(Event Delivery: The Responder Chain)【转】
- Event Delivery: The Responder Chain
- Event Delivery: The Responder Chain
- android触摸事件处理逻辑
- 详解 QT Event 以及 Event Filter 事件处理
- dispatchTouchEvent(),onTouchEvent(MotionEvent event),onInterceptTouchEvent(MotionEvent event)的事件处理
- JavaScript Event 事件处理机制之自定义事件处理方法
- Manual:Intro:Event Handling(事件处理)
- 事件的传递 event 冒泡处理
- 11-jbpm工作流之"事件处理Event"
- 复合事件处理(Complex Event Processing)介绍
- Coursera数学思维导论之学生互评打分标准
- 常用命令备忘录
- 第七章--表单和数据表格
- Handler介绍
- c++类的构造函数详解
- Event Delivery: 事件处理逻辑
- C++ 虚函数表解析
- [错误]Failed assertion in Init_IDT:g_handlerSizeNoErr == g_handlerSizeErr
- 第八章--布局
- TimesTen Active standby切换启停脚本
- 网站多种语言的处理办法
- 多线程操作集合时如何保证集合的线程安全性
- Seasar的S2Struts例子学习
- 第九章--bug和修复bug