iOS UIButton加在window上点击无效果问题

Posted 百里抱木

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS UIButton加在window上点击无效果问题相关的知识,希望对你有一定的参考价值。

UIButton加在window上,点击没有效果,找了很久,原来是没有加上这名:[self.window makeKeyAndVisible];

self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen] bounds]];
    ViewController *vc = [[ViewController alloc] init];
    self.window.rootViewController = vc;
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    
    view1 = [[UIView alloc] initWithFrame:CGRectMake(60, 200, 200, 100)];
    view1.backgroundColor = [UIColor blueColor];
    [self.window addSubview:view1];
    
    UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(60, 200, 50, 150)];
    view2.backgroundColor = [UIColor yellowColor];
    [self.window addSubview:view2];
    
    
    UIView *view3 = [[UIView alloc] initWithFrame:CGRectMake(60, 400, 200, 100)];
    view3.backgroundColor = [UIColor redColor];
    [self.window addSubview:view3];
    
    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    button.frame = CGRectMake(60, 510, 100, 35);
    button.userInteractionEnabled = YES;
    button.backgroundColor = [UIColor greenColor];
    [button setTitle:@"change" forState:UIControlStateNormal];
    [button addTarget:self action:@selector(changeView) forControlEvents:UIControlEventTouchUpInside];
    [self.window addSubview:button];
    NSLog(@"%@",self.window.subviews);
- (void)changeView
{
    [self.window bringSubviewToFront:view1];
     NSLog(@"%@",self.window.subviews);
}

不要直接加在window上,加在ViewController view上点击有效果

view1 = [[UIView alloc] initWithFrame:CGRectMake(60, 200, 200, 100)];
    view1.backgroundColor = [UIColor blueColor];
    [self.view addSubview:view1];
    
    UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(60, 200, 50, 150)];
    view2.backgroundColor = [UIColor yellowColor];
    view2.tag = 2;
    [self.view addSubview:view2];
    
    
    UIView *view3 = [[UIView alloc] initWithFrame:CGRectMake(60, 400, 200, 100)];
    view3.backgroundColor = [UIColor redColor];
    [self.view addSubview:view3];
    
    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    button.frame = CGRectMake(60, 510, 100, 35);
    button.userInteractionEnabled = YES;
    button.backgroundColor = [UIColor greenColor];
    [button setTitle:@"change" forState:UIControlStateNormal];
    [button addTarget:self action:@selector(changeView) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
    NSLog(@"%@",self.view.subviews);
- (void)changeView
{
    [self.view bringSubviewToFront:view1];
    UIView *view = [self.view viewWithTag:2];
    view.backgroundColor = [UIColor purpleColor];
    NSLog(@"%@",self.view.subviews);
}

以上是关于iOS UIButton加在window上点击无效果问题的主要内容,如果未能解决你的问题,请参考以下文章

iOS -- 解决iOS11中navigationBar上使用initWithCustomView按钮图片错位 frame无效

iOS上如何让按钮(UIbutton)文本左对齐展示

iOS扩大UIButton按钮的点击范围

ios 按钮点击无反应

iOS - 如何放大 UIButton 的中心?

iOS之扩大UIButton(UIView)的点击范围