子视图超出父视图的状况下依旧能够触发事件
如图: 前端
这种状况下,咱们能够重写父视图的hitTest:withEvent:
方法,得到焦点,而后判断焦点位置,最后交给谁来处理这个时间 解决方案以下:bash
-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
//判断点在不在后面的按钮身上
//首先要想判断在不在后面按钮范围内必须先把两个坐标放在同一坐标系下
//把当前的点转换到按钮身上的坐标系的点
CGPoint btnP = [self convertPoint:point toView:self.btn];
if ([self.btn pointInside:btnP withEvent:event]) {
//若是在后面按钮上,能够返回按钮,让按钮响应事件
return self.btn;
}else{
//若是不在就按照系统默认作法
return [super hitTest:point withEvent:event];
}
}
复制代码