iOS 响应链】的更多相关文章

一.UIResponder app 使用响应者对象接收和处理事件,只有继承 UIResponder 的类,才能处理事件. UIApplication.UIView.UIViewController 都是继承自 UIResponder 类,可以响应和处理事件.CALayer 继承自 NSObject,不是 UIResponder 的子类,无法处理事件. 响应者接收到原始事件数据,必须处理事件或者转发到另一个响应者对象.当 App 接收到一个事件时,UIKit 自动引导事件到最合适的响应者对象,也叫…
iOS中加载的时候会先执行main函数 int main(int argc, charchar * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } } 根据main函数的参数加载UIApplication->AppDelegate->UIWindow->UIViewController->superVie…
ios找到被点击的view的过程是从根view开始递归地调用hitTest方法,直到有一个子view的hitTest方法返回自身:如果所有一级子view的hitTest方法都返回nil,那么根view就返回自己. 应用hitTest方法,hitTest方法的作用是返回被点击的view,只返回一个. 每个view都会有hitTest方法,hitTest方法里面会去调用pointInside方法来判断点击的点是否在自己的view范围内,hitTest返回自身view的条件是自身的hitTest方法被…
概述 在iOS中,视图的层级一般都是 父视图->添加各种子视图.这时候某个视图(子视图)上有个按钮,需要我们交互.但是有时候我们会发现无论如何都没有反应.这时候可能就是我们对iOS的事件传递响应还有些迷茫. 事件的传递:简单的来说就是事件的传递顺序.他是系统向可响应的离用户最近的视图传递.大致流程就是 UIKit -> ... -> root view -> ... -> initial view .(方式是从上到下传递) 事件的响应:在我们的视图中一般都是树状结构,有层级关…
序言 当我们在使用微信等工具,点击扫一扫,就能打开二维码扫描视图.在我们点击屏幕的时候,iphone OS获取到了用户进行了“单击”这一行为,操作系统把包含这些点击事件的信息包装成UITouch和UIEvent形式的实例,然后找到当前运行的程序,逐级寻找能够响应这个事件的对象,直到没有响应者响应.这一寻找的过程,被称作事件的响应链,如下图所示,不用的响应者以链式的方式寻找 事件响应链 响应者 在iOS中,能够响应事件的对象都是UIResponder的子类对象.UIResponder提供了四个用户…
iOS的三种事件:触摸事件/运动事件/远程控制事件 typedef enum { UIEventTypeTouches, UIEventTypeMotion, UIEventTypeRemoteControl, } UIEventType; 仅仅有继承UIResponder类的对象才干处理事件,如UIView.UIViewController.UIApplication都继承自UIResponder,都能接收并处理事件.UIResponder中定义了上面三类事件相关的处理方法: 以下主要讨论触摸…
1.提纲 什么是iOS的事件分发机制 ? 一个事件UIEvent又是如何响应的? 手势对于响应链有何影响? 2.事件分发机制 2.1.来源 以直接触摸事件为例: 当用户一个手指触摸屏幕是会生成一个UITouch对象,多个手指就是多个对象,手指移动系统会更新对象的相应信息. 系统会将UITouch对象封装生成一个事件UIEvent对象,将这个事件交给最佳具有响应能力的视图处理. 系统有个UIResponder类,只有继承UIResponder的类才具有响应事件能力,所以UIKit系统控件大多是继承…
iOS事件链有两条:事件的响应链:Hit-Testing事件的传递链 响应链:由离用户最近的view向系统传递.initial view –> super view –> ….. –> view controller –> window –> Application –> AppDelegate 传递链:由系统向离用户最近的view传递.UIKit –> active app's event queue –> window –> root view –…
学习内容 欢迎关注我的iOS学习总结--每天学一点iOS:https://github.com/practiceqian/one-day-one-iOS-summary iOS中事件传递和相应机制 iOS中的事件(主要有三类) 触摸事件(touch Event) 运动/加速计事件(motion Event) 远程控制事件(remote-control Event) UIResponder(响应者对象) iOS中只有继承了UIResponder的类才能接收并处理事件,称之为响应者对象. 为什么继承…
http://www.jianshu.com/p/9717b792599c   是原文地址 处理关闭键盘的做法一般分为两种:1.放弃第一响应者身份:2.当前视图结束编辑.通常情况下只要我们在合适的时机去做这两件事的任意一种,都会很稳妥的如我们所愿----关闭键盘.但是,总有那么一些特殊情况使我们不能如意的关闭键盘,比如:在tableviewcell上有一个textfiled或者textview时,我们想要点击背部空白关闭键盘时确不能如愿.现在,我们一步一步的来解决这个问题,首先我们创建一个这样的…