之前開發(fā)項目的時候遇到的一些問題,只是簡單的記錄了一下,現(xiàn)在正好有空整理一下,自己再回顧一下,也分享給大家,寫的不對的地方請指正,謝謝!
問題:如下圖,子控件的布局超出了底下的父控件,所以在點擊子控件進行展開的時候無法接收點擊方法。image.png
因為父控件(UITabBar)在調(diào)用 hitTest:withEvent:方法方法時,由于觸摸點不在父控件范圍內(nèi),所以無法讓子控件(UIButton)做為最合適的view去處理點擊事件。
解決方法:
重寫UITabBar的hitTest:withEvent:方法(準確的說是super調(diào)用hitTest:withEvent:,因為要實現(xiàn)在UITabBar添加自定義居中且超出范圍的按鈕都是通過自定義UITabBar的方式實現(xiàn)的),當(dāng)無法找到這個最合適的view時,先將觸摸點坐標(point參數(shù))轉(zhuǎn)換到button所在坐標系,判斷觸摸點是否在button范圍內(nèi),如果在,則返回button為處理事件最合適的view,這樣button就能正確觸發(fā)點擊事件.
代碼如下:
image.png