美文网首页
iOS 子视图超出父视图范围 无法响应点击事件解决方案

iOS 子视图超出父视图范围 无法响应点击事件解决方案

作者: VincentHK | 来源:发表于2017-11-17 15:40 被阅读0次

如果在cell上添加了一个Tableview,但是tableview的范围超出了cell的frame。 此时你去点击超出部分的内容,发现不会进入点击cell的回调。原因是事件响应断了。当我们点击屏幕的时候,会产生一个点击事件,该事件从下往上一层层传递,当子视图超出父视图时,事件传递会返回nil,就是系统认为没有对象响应这个点击事件,因为你的点击范围不在父视图内。此时需要重写一个方法,返回响应这个事件的对象:如下

-(UIView*)hitTest:(CGPoint)point withEvent:(UIEvent*)event

{

UIView*view = [superhitTest:pointwithEvent:event];

if(view ==nil) {

for(UIView*subViewinself.subviews) {

CGPointmyPoint = [subViewconvertPoint:pointfromView:self];

if(CGRectContainsPoint(subView.bounds, myPoint)) {

returnsubView;

}

}

}

returnview;

}

}

此方法写在父视图上

相关文章

网友评论

      本文标题:iOS 子视图超出父视图范围 无法响应点击事件解决方案

      本文链接:https://www.haomeiwen.com/subject/deyjvxtx.html