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

前言

一个朋友问我过一个这样的问题,他在底部的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.

其他更详细的代码在这里

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容