9.5 触摸和手势:事件的传递的机制--演示代码

来源:互联网 发布:python读音 编辑:程序博客网 时间:2024/06/06 07:39



AppDelegate-----将UIWindow替换为TouchWindow

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{    self.window = [[TouchWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];        self.window.backgroundColor = [UIColor whiteColor];    [self.window makeKeyAndVisible];        MainViewController *mainCtrl = [[MainViewController alloc] init];    self.window.rootViewController = mainCtrl;        return YES;}


@interface TouchWindow :UIWindow

#import "TouchWindow.h"@implementation TouchWindow- (id)initWithFrame:(CGRect)frame{    self = [super initWithFrame:frame];    if (self) {        // Initialization code    }    return self;}// 分发事件- (void)sendEvent:(UIEvent *)event{    [super sendEvent:event];    }// 响应者链传递- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{    NSLog(@"TouchWindow ---touchesBegan");}


@interface TouchView :UIView

#import "TouchView.h"@implementation TouchView- (id)initWithFrame:(CGRect)frame{    self = [super initWithFrame:frame];    if (self) {        // Initialization code    }    return self;}//事件的响应- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{    NSLog(@"TouchView---touchesBegan");        // 将事件传递给下一个响应者;    [self.nextResponder touchesBegan:touches withEvent:event];}@end

#import "MainViewController.h"#import "TouchView.h"@interface MainViewController ()@end@implementation MainViewController- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];    if (self) {        // Custom initialization    }    return self;}- (void)viewDidLoad{    [super viewDidLoad];        TouchView *touchView = [[TouchView alloc] initWithFrame:CGRectMake(0, 0, 320, 350)];    [touchView setBackgroundColor:[UIColor grayColor]];    [self.view addSubview:touchView];        }- (void)didReceiveMemoryWarning{    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}// 测试响应者链传递- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{    NSLog(@"MainViewController-----touchesBegan");        // 将事件传递给下一个响应者;    [self.nextResponder touchesBegan:touches withEvent:event];}@end






0 0