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

如果在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;

}

}

此方法写在父视图上

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容