在iOS开发中会遇到一些设计样式,需要把按钮一部分悬空在父视图的上面,但是当我们点击该按钮时,超出了父视图的悬空部分不会响应该按钮的点击事件。
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;
}
网友评论