参考:
iOS触摸事件全家桶
史上最详细的iOS之事件的传递和响应机制-原理篇
1、同一层级,让上面的一层不响应,让被盖住的地方响应,常见的场景是引导图高亮的地方点击让底部响应
BoxA 包含 subB,subC,subB在subC的上面,想点击subB时让下面的subC响应
重写在上面的subB
- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
UIView *hitView = [super hitTest:point withEvent:event];
// 如果点击
if(判断点击的地方如果是需要不影响的地方){
// 表示让
return nil;
}
return hitView;
}
2、容器的字内容超出了容器的frame也要让响应
重写容器View的如下方法
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
UIView *view = [super hitTest:point withEvent:event];
if (view == nil) {
// 如果点击区域不再容器中,继续判断容器的子内容是否在容器中
for (UIView *subView in self.subviews) {
CGPoint tp = [subView convertPoint:point fromView:self];
if (CGRectContainsPoint(subView.bounds, tp)) {
view = subView;
}
}
}
return view;
}
网友评论