#import "AppDelegate.h"
@interface AppDelegate ()
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.backgroundColor = [UIColor whiteColor];
self.window.rootViewController = [[UIViewController alloc] init];
self.window.rootViewController.view.userInteractionEnabled = NO;
//===================================
//不能接收事件:感受不到手指的触摸(相当于死人)
//能接收事件:能感受到手指的触摸
//能并不是能够接收事件就可以响应事件,但是能响应事件的前提是可以接收事件
//默认情况下:UIWindow、UIView和UIButton可以接收事件;UILabel和UIImageView不可以接受事件。
//1.父视图不能接收事件,则子视图无法接受事件。
//如果本来可以接收事件的视图,添加到了不能接收事件的视图上,那么本来可以接收事件的视图也接收不到事件了
//UIButton可以接收事件,并且可以响应事件
UIButton * button = [[UIButton alloc] initWithFrame:CGRectMake(-30, -30, 80, 80)];
button.backgroundColor = [UIColor redColor];
[button addTarget:self action:@selector(onclicked:) forControlEvents:UIControlEventTouchUpInside];
//window默认可以接收事件,所以添加到window的子视图本来可以接收事件的可以接收事件
[_window addSubview:button];
//UIImageView默认不可以接收事件
UIImageView * imageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
imageView.backgroundColor = [UIColor yellowColor];
[_window addSubview:imageView];
//UIImageView默认不可以接收事件,所以添加到UIImageView上面的子视图不能接收事件
[imageView addSubview:button];
//设置控件是否可以接收事件
//YES:可以进行用户交互
//NO:不可以进行用户交互
imageView.userInteractionEnabled = YES;
//关闭按钮的用户交互
// button.userInteractionEnabled = NO;
//2.子视图超出父视图的部分,不能接收事件
//3.同一个父视图下,最上面的视图,首先遭遇事件,如果能够响应,就不向下传递事件。如果不能接收,事件向下传递。
UIButton * button2 = [[UIButton alloc] initWithFrame:CGRectMake(100, 100, 150, 150)];
button2.backgroundColor = [UIColor purpleColor];
[button2 addTarget:self action:@selector(onclicked:) forControlEvents:UIControlEventTouchUpInside];
[self.window addSubview:button2];
[self.window sendSubviewToBack:button2];
//imageView可以接收事件,点击事件让imageView去接收,imageView下层的按钮接收不到事件
//imageView不可以接收事件,会将事件传递到下一层
imageView.userInteractionEnabled = NO;
[self.window makeKeyAndVisible];
return YES;
}
#pragma mark - 按钮点击
- (void)onclicked:(UIButton *)button{
NSLog(@"按钮被点击了");
}
- (void)applicationWillResignActive:(UIApplication *)application {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}
- (void)applicationWillTerminate:(UIApplication *)application {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
@end