iOS中子视图超出父视图的按钮点击事件响应处理

在iOS开发中会遇到一些设计样式,需要把按钮一部分悬空在父视图的上面,但是当我们点击该按钮时,超出了父视图的悬空部分不会响应该按钮的点击事件。

iOS中子视图超出父视图的按钮点击事件响应处理_第1张图片
63451D42-A48B-4BAF-8FE4-9C397D2069D5.png

如图所示 点击超出父视图(白色)的头像区域有触发点击事件。
在自定义的UIView视图类中 重写如下代码,这样我们的点击事件就有反应了。

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    UIView *view = [super hitTest:point withEvent:event];
    if (view == nil) {
        //将坐标由当前视图发送到 指定视图 fromView是无法响应的范围小父视图
        CGPoint stationPoint = [_headImageView convertPoint:point fromView:self];
        if (CGRectContainsPoint(_headImageView.bounds, stationPoint))
        {
            view = _headImageView;
        }
    }
    return view;
}

你可能感兴趣的:(iOS中子视图超出父视图的按钮点击事件响应处理)