iOS 子視圖超出父視圖范圍 無法響應(yīng)點擊事件解決方案

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

}

}

此方法寫在父視圖上

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問題演示 我們經(jīng)??吹竭@樣的app,它的tabBar上中間的按鈕超出了tabBar的范圍,但是我們在實際做的時候會...
    BrightFuture閱讀 12,173評論 12 25
  • 好奇觸摸事件是如何從屏幕轉(zhuǎn)移到APP內(nèi)的?困惑于Cell怎么突然不能點擊了?糾結(jié)于如何實現(xiàn)這個奇葩響應(yīng)需求?亦或是...
    Lotheve閱讀 59,438評論 51 604
  • 在iOS開發(fā)中經(jīng)常會涉及到觸摸事件。本想自己總結(jié)一下,但是遇到了這篇文章,感覺總結(jié)的已經(jīng)很到位,特此轉(zhuǎn)載。作者:L...
    WQ_UESTC閱讀 6,237評論 4 26

友情鏈接更多精彩內(nèi)容