超过父控件的部分不能响应事件怎么办

前言

一个朋友问我过一个这样的问题,他在底部的tabBar上面加了一个控件,这个控件超出了底部的tabBar,超出的部分无法响应事件,怎么办?

相信大家应该明白为什么不能响应事件的原因,就是响应者链条么,你父控件不能响应,系统就认为你也不能响应,具体的内容请看这篇博客

我这里自定义了一个tabBar,在里面重写了 -(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event方法,这个方法主要是用来检查该触摸点是否在该控件所在的矩形区域内,你只要在这个方法里让超出的部分返回为YES,就可以了.

-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{
if ([super pointInside:point withEvent:event]) {
    return [super pointInside:point withEvent:event];
}else{
    CGRect rect = [self convertRect:self.plusButton.frame toView:self];
    return CGRectContainsPoint(rect, point);
}
}

说明:如果([super pointInside:point withEvent:event]方法返回的是YES,我不做处理,只有当这个方法返回为NO的时候,才去判断是否在那个加号按钮的范围内,其中用到了frame转换,在按钮的范围内返回为YES,其他的返回为NO.

其他更详细的代码在这里

你可能感兴趣的:(超过父控件的部分不能响应事件怎么办)