iOS DeveloperiOS 开发

11. iOS中响应者链

2016-04-04  本文已影响290人  LynnXYT

题记:只要努力,凡事总会有转机。今天复习的时iOS中的响应者链条和事件的分发,二者存在一定的联系,理解一下原理,对以后编程开发都会有帮助的,这些并不难理解,关键是理解之后要记得住。

1.什么是事件的响应者

只要继承了UIResponder的对象就可以作为事件的响应者,下面看一下 UIResponder及其子类的继承关系:

`UIResponder`及其子类的继承关系

其中AppDelegate类是创建一个iOS项目时自动创建的继承UIResponder的应用程序委托类,记得不太清的同学可以简单看一下面的代码:

// 接口文件
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@end

// 实现文件
#import "AppDelegate.h"
@interface AppDelegate ()
@end

@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    return YES;
}
- (void)applicationWillResignActive:(UIApplication *)application {}
- (void)applicationDidEnterBackground:(UIApplication *)application {}
- (void)applicationWillEnterForeground:(UIApplication *)application {}
- (void)applicationDidBecomeActive:(UIApplication *)application {}
- (void)applicationWillTerminate:(UIApplication *)application {}
@end

2. 什么是第一响应者

与用户交互的控件就是第一响应者,它将作为响应者链的开始,事件首先发送给第一响应者,然后再依次传递下去,直到该事件被某个响应者处理。

3. 响应者链

如果当前响应者无法响应用户事件,它将继续向上传递,直到找到该响应者,这个传递过程形成了一条有规律的链条,组成了响应者链,如下图:

响应者链的组成

如果一直找到AppDelegate类还是无法响应用户事件,那么这个事件将无法被响应,但如果在响应者链上传递的过程中,有某个响应者对该传递的事件有响应,该传递过程将立即停止。

4. 事件分发

5.导致响应者链条断掉的几种可能

这里要感谢 纸飞机波音747的提问,和iPhone贴膜小哥对回答的补充

参考博文

上一篇 下一篇

猜你喜欢

热点阅读