關(guān)于 iOS 嵌套UIScrollview的滑動沖突 的思考

嵌套UIScrollview的滑動沖突解決方案
http://m.itdecent.cn/p/040772693872
iOS 嵌套UIScrollview的滑動沖突另一種解決方案
http://m.itdecent.cn/p/df01610b4e73

類似于抖音個人中心頁面這種

之前幾位大佬的關(guān)于嵌套ScrollView的處理方案如上。

其實,蘋果本身是不建議嵌套ScrollView的,并且其實我們不管嵌套怎么處理效果其實都不是完美的理想,都有些許問題。

1、兩個滑動事件過渡的時候很突兀
2、通過過渡動畫去處理過渡沖突,還是會有細小的問題,適配也比較麻煩,重點是必須要做一套適應(yīng)的動畫。

今天寫類似功能的時候看著抖音的個人中心頁面發(fā)現(xiàn)抖音的一個bug,本著好奇心調(diào)了一下bug,突然發(fā)現(xiàn)了一個挺簡單的實現(xiàn)思路。

其實很簡單一個思路:

WX20190311-165452.png

本身我們有一個Base View A

1、A 里面有 一個使用page分頁功能的 scrollView 我們稱為 C, 并且edage equal 父類,里面放置兩頁 tableView D

2、然后 我們再在 A 里面 加一個HeaderView,比如一個200高度的headerView

3、然后 把 collectionView的 contentInset 設(shè)置為 top 200

4、scrollDidScroll代理中處理 當 collectionView 滑動的時候 HeaderView與collectionView之間一直保持0距離,這樣就相當于有了一個兩個 collectionView 公用的 headerView了。

存在的問題:

1、由于headerView 是支持事件的,導(dǎo)致在headerView滑動不了底部的collectionView,同時我們不能直接禁用掉事件支持,因為headerView中肯定會放置一些需要響應(yīng)的按鈕之類的元素

解決:

重寫headerView中的hitTest方法,過濾掉我們需要響應(yīng)的元素,其他元素的事件就會傳遞到底部,也就是collectionView上,也就可以正?;瑒恿?/p>

后續(xù)補個demo

最后編輯于
?著作權(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ù)。

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