開(kāi)發(fā)遇到的坑一

項(xiàng)目的需求:在后面大的白色view中,上部添加一個(gè)藍(lán)色的Aview,下部添加一個(gè)橙色的Bview,在Bview中添加一個(gè)紅色按鈕,點(diǎn)擊紅色按鈕去處理事件。

遇到的問(wèn)題:在按照上面的樣式,畫(huà)好界面之后,也給按鈕添加了點(diǎn)擊事件響應(yīng)方法,但是點(diǎn)擊按鈕沒(méi)有反應(yīng),代碼壓根走不到響應(yīng)方法里面去。

解決思路:該點(diǎn)擊事件沒(méi)有分配給button去處理,所以是響應(yīng)者鏈的問(wèn)題。

查找原因辦法:1,用圖層層級(jí)工具檢測(cè),發(fā)現(xiàn)視圖上面沒(méi)有其他view遮蓋。

2,檢測(cè)按鈕機(jī)器父控件的alpha,userInteractionEnabled,hidden等熟悉,都沒(méi)問(wèn)題。都可以接收點(diǎn)擊事件。

最后發(fā)現(xiàn)所有常規(guī)方法都發(fā)現(xiàn)不了問(wèn)題在哪里。

揭曉答案:我把Bview添加到了Aview中,成為Aview的子控件。

分析原因:Bview本來(lái)應(yīng)該添加到白色的大View中,按照響應(yīng)者鏈條,點(diǎn)擊按鈕事件會(huì)正常分配給button。但是我卻把Bview誤添加到了Aview中,此時(shí)點(diǎn)擊button,按鈕接收不到事件,因?yàn)橐隻utton接收,事件必須從底層出發(fā),一層一層經(jīng)過(guò)Aview等祖先控件傳遞到button,但是現(xiàn)在點(diǎn)擊的button所在的位置,不在Aview的范圍內(nèi),Aview不會(huì)接受處理該事件,Aview都不接受處理了,那么他的子view,button肯定也不會(huì)響應(yīng)該事件。

解決方法:一句代碼把Bview正確添加到白色大view中,即可。事件的底層處理機(jī)制,是解決該問(wèn)題的關(guān)鍵。

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

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

  • 好奇觸摸事件是如何從屏幕轉(zhuǎn)移到APP內(nèi)的?困惑于Cell怎么突然不能點(diǎn)擊了?糾結(jié)于如何實(shí)現(xiàn)這個(gè)奇葩響應(yīng)需求?亦或是...
    Lotheve閱讀 59,543評(píng)論 51 604
  • 在iOS開(kāi)發(fā)中經(jīng)常會(huì)涉及到觸摸事件。本想自己總結(jié)一下,但是遇到了這篇文章,感覺(jué)總結(jié)的已經(jīng)很到位,特此轉(zhuǎn)載。作者:L...
    WQ_UESTC閱讀 6,249評(píng)論 4 26
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,057評(píng)論 25 709
  • ¥開(kāi)啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開(kāi)一個(gè)線程,因...
    小菜c閱讀 7,334評(píng)論 0 17
  • 2017年8月29日天氣晴星期二 我媽媽回到我身邊了,我特別的事情就是我很開(kāi)心。我的什么事情都沒(méi)有了。
    琦琦花仙子小月閱讀 425評(píng)論 0 1

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