- 在开发中,我们也会经常碰到一个控件的各种奇葩的事情,常常会导致我们有一些误解或者出不来我们想要的结果。比如没有尺寸的父控件,那么这个子控件会怎样?
- 千万不要因为父控件没有尺寸,子控件就不会显示出来,那是非常错误的一个想法。我们看一下一下代码:
- (void)viewDidLoad
{
[super viewDidLoad];
UIButton *red = [[UIButton alloc] init];
red.backgroundColor = [UIColor redColor];
red.frame = CGRectMake(100, 100, 0, 0);
[red addTarget:self action:@selector(redClick) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:red];
UIButton *blue = [[UIButton alloc] init];
blue.backgroundColor = [UIColor blueColor];
blue.frame = CGRectMake(25, 25, 50, 50);
[blue addTarget:self action:@selector(blueClick) forControlEvents:UIControlEventTouchUpInside];
[red addSubview:blue];
}
- (void)redClick
{
NSLog(@"点击了红色");
}
- (void)blueClick
{
NSLog(@"点击了蓝色");
}
我们运行起来看一下效果:
首先,当父控件没有尺寸的时候,子控件还是可以出来
- 但是这个blue的点击事件,就不能响应事件了。
- 当一个控件的父控件不能响应事件,那么这个控件也是不能响应事件的,这就关联到事件的传递过程。
- 所以当我们看到一个控件点击没有反应的时候,很有可能是他的父控件不能接受事件。