嵌套UIScrollview的滑動沖突解決方案
http://www.lxweimin.com/p/040772693872
iOS 嵌套UIScrollview的滑動沖突另一種解決方案
http://www.lxweimin.com/p/df01610b4e73
類似于抖音個人中心頁面這種
之前幾位大佬的關于嵌套ScrollView的處理方案如上。
其實,蘋果本身是不建議嵌套ScrollView的,并且其實我們不管嵌套怎么處理效果其實都不是完美的理想,都有些許問題。
1、兩個滑動事件過渡的時候很突兀
2、通過過渡動畫去處理過渡沖突,還是會有細小的問題,適配也比較麻煩,重點是必須要做一套適應的動畫。
今天寫類似功能的時候看著抖音的個人中心頁面發現抖音的一個bug,本著好奇心調了一下bug,突然發現了一個挺簡單的實現思路。
其實很簡單一個思路:
本身我們有一個Base View A
1、A 里面有 一個使用page分頁功能的 scrollView 我們稱為 C, 并且edage equal 父類,里面放置兩頁 tableView D
2、然后 我們再在 A 里面 加一個HeaderView,比如一個200高度的headerView
3、然后 把 collectionView的 contentInset 設置為 top 200
4、scrollDidScroll代理中處理 當 collectionView 滑動的時候 HeaderView與collectionView之間一直保持0距離,這樣就相當于有了一個兩個 collectionView 公用的 headerView了。
存在的問題:
1、由于headerView 是支持事件的,導致在headerView滑動不了底部的collectionView,同時我們不能直接禁用掉事件支持,因為headerView中肯定會放置一些需要響應的按鈕之類的元素
解決:
重寫headerView中的hitTest方法,過濾掉我們需要響應的元素,其他元素的事件就會傳遞到底部,也就是collectionView上,也就可以正常滑動了
后續補個demo