您的位置:首页 > 编程语言

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

2014-07-19 16:35 381 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: