如果在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;
}
}
此方法写在父视图上