UIResponder
是回应和处理事件的抽象接口,UIResponder
的实例,包括:UIApplication
、UIViewController
、UIView
(包含UIWindow
),组成了UIKit
处理事件的核心。当事件发生时,UIKit
会把事件派发给UIResponder
去处理。
有许多种事件,包括触摸、手势、遥控和点击事件。为了处理特定的事件,一个responder
(响应)必须重写corresponding
方法。比如,要想处理touch
事件,一个responder
要实现touchesBegan:withEvent
,touchedMoved:withEvent:
等方法。在触摸事件的列子中,responder
使用UIKit提供的事件信息来追踪触摸的改变,然后适时地更新界面。
除了处理事件,UIKit responder
还负责转发那边没有被处理的事件给app的其他部分。如果一个指定的responder
没有处理事件,它就会转发这个事件到响应链的下一个responder
。UIKit动态地管理响应链,使用预定的规则来决定下一个收到事件的对象。比如:一个view
转发事件到它的superView
,或者Rootview
转发事件给它的view controller
。
Responder
处理UIEvent
和其他通过输入界面的自定义输入,最典型的就是系统的键盘。当用户点击UITextField
和UITextView
,这个view变成了第一个responder
,然后展示它的输入界面:键盘。同样的,你可以创造一个自定义的输入界面,然后在其他responders
活跃的时候展示它。为了把输入界面和responder
联系在一起,要把view
赋值给responder
的属性。
原文链接 UIResponder
如果有任何建议和优化的地方,欢迎给我留言。