IOS之UIVIEW事件接收



#import "AppDelegate.h"


@interface AppDelegate ()


@end


@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;

    

    //===================================

    //不能接收事件:感受不到手指的触摸(相当于死人)

    //能接收事件:能感受到手指的触摸

    //能并不是能够接收事件就可以响应事件,但是能响应事件的前提是可以接收事件

    //默认情况下:UIWindowUIViewUIButton可以接收事件;UILabelUIImageView不可以接受事件。

    

    

    //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


转载于:https://my.oschina.net/luhoney/blog/655427

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值