如果在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;
}
}
此方法寫在父視圖上