本文主要是介绍iOS 子视图超出父视图范围 无法响应点击事件解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
如果在cell上添加了一个Tableview,但是tableview的范围超出了cell的frame。 此时你去点击超出部分的内容,发现不会进入点击cell的回调。原因是事件响应断了。当我们点击屏幕的时候,会产生一个点击事件,该事件从下往上一层层传递,当子视图超出父视图时,事件传递会返回nil,就是系统认为没有对象响应这个点击事件,因为你的点击范围不在父视图内。此时需要重写一个方法,返回响应这个事件的对象:如下
-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
UIView *view = [super hitTest:point withEvent:event];
if (view == nil) {
for (UIView *subView in self.subviews) {
CGPoint myPoint = [subView convertPoint:point fromView:self];
if (CGRectContainsPoint(subView.bounds, myPoint)) {
return subView;
}
}
}
return view;
}
}
此方法写在父视图上
这篇关于iOS 子视图超出父视图范围 无法响应点击事件解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!