##前言 ###一个朋友问我过一个这样的问题,他在底部的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.
其他更详细的代码