如果在cell上添加了一個(gè)Tableview,但是tableview的范圍超出了cell的frame划提。 此時(shí)你去點(diǎn)擊超出部分的內(nèi)容崔涂,發(fā)現(xiàn)不會(huì)進(jìn)入點(diǎn)擊cell的回調(diào)。原因是事件響應(yīng)斷了糊秆。當(dāng)我們點(diǎn)擊屏幕的時(shí)候武福,會(huì)產(chǎn)生一個(gè)點(diǎn)擊事件,該事件從下往上一層層傳遞痘番,當(dāng)子視圖超出父視圖時(shí)捉片,事件傳遞會(huì)返回nil,就是系統(tǒng)認(rèn)為沒有對(duì)象響應(yīng)這個(gè)點(diǎn)擊事件汞舱,因?yàn)槟愕狞c(diǎn)擊范圍不在父視圖內(nèi)伍纫。此時(shí)需要重寫一個(gè)方法,返回響應(yīng)這個(gè)事件的對(duì)象:如下
-(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;
}
}
此方法寫在父視圖上