iOS开发

iOS-事件传递、响应者链条、事件响应

2019-10-12  本文已影响0人  inyourface

1.响应者链条

只有继承UIResponder的对象才能够接收并处理事件,UIResponder 是所有响应对象的基类。UIApplication、 UIViewController、 UIWindow 和继承自UIView的UIKit类都直接或间接的继承自UIResponder,所以它们的实例都是可以构成响应者对象。响应者链就是由一系列的响应者对象构成的一个层次结构

2.事件的传递

UIApplication->UIViewController->UIView->UIButton

如果父视图不能接收事件,那么就不会向下传递,子视图也不可能接收处理事件

3.事件的响应

事件传递找到视图UIview的时候首先看view能否处理这个事件,如果能处理则交由其处理并停止该事件的向上响应,如果不能则会将事件传递给其上级视图;如果上级视图无法处理则会继续往上传递;一直到 UIwindow,如果UIwindow不能处理此事件则继续交给UIApplication处理,如果最后UIApplication还是不能处理此事件则将其丢弃。

总结:事件的传递:自上向下

            事件的响应:自下向上

4.UIResponder提供了几个处理事件的方法:

//触摸事件

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;

//加速计事件

- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event;

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event;

- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event;

//远程控制事件

- (void)remoteControlReceivedWithEvent:(UIEvent *)event;


上一篇下一篇

猜你喜欢

热点阅读