事件响应
2019-10-08 本文已影响0人
Code_人生
-
UIEvent:
分为三类Touch、Motion、Remote UIResponder:
Hit-Testing:
Responder chain:
UIControl:
一、几个规则
- 1、如果当前的
View
是ViewController
的rootView
,那么它的nextResponder
就是ViewController
,否者next responder
指向的就是superView
- 2、如果
ViewController
的View
是当前Windows
的rootView
,当前nextResponder
指向的就是Windows
- 3、如果当前的
ViewController
是被其他ViewController
presented
的,当前的nextResponder
指向的就是the presenting view controller
- 4、
UIWindow
的nextResponder
指向的是UIApplication object
- 5、
UIApplication
对象的nextResponder
指向的就是app delegate
,但是当前的app delegate
应该是UIResponder
的对象,而不是view
,viewController
。
二、三个问题
1、响应链是如何构建的
2、事件的第一个响应者是如何确定的
通过hitTest: withEvent:
和pointInside: withEvent:
这个两个方法,最佳响应者查找
3、系统是如何传递事件的?
1、UIView
2、手势
3、UIControl(addTarget)