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