如果在cell上添加了一個Tableview,但是tableview的范圍超出了cell的frame。 此時你去點擊超出部分的內(nèi)容,發(fā)現(xiàn)不會進入點擊cell的回調(diào)。原因是事件響應(yīng)斷了。當(dāng)我們點擊屏幕的時候,會產(chǎn)生一個點擊事件,該事件從下往上一層層傳遞,當(dāng)子視圖超出父視圖時,事件傳遞會返回nil,就是系統(tǒng)認為沒有對象響應(yīng)這個點擊事件,因為你的點擊范圍不在父視圖內(nèi)。此時需要重寫一個方法,返回響應(yīng)這個事件的對象:如下
-(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;
}
}
此方法寫在父視圖上