所以我意識到在所有的紅旗上都有嵌套的滾動視圖,但是除了一個小問題之外,目前的所有設置實際上都工作得很好。一個滾動視圖管理在一個集合中滾動,另一個處理整個集合視圖上的縮放和平移。這一切都有效,但小問題來自放大和向下平移時,滾動視圖在collectionview滾動時平移,導致視圖滾動兩次,並且感覺不到手指的連接。在嵌套的UIScrollViews中處理衝突的手勢
我理想想要發生的事情是垂直滾動是在可以平移時由外滾動視圖管理,然後在外滾動視圖不能再平移時由內滾動視圖處理。我寫這樣的事情非常接近:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if (scrollView == _outerScrollView) {
CGPoint offset = _outerScrollView.contentOffset;
CGFloat height = _outerScrollView.frame.size.height;
CGFloat contentHeight = _outerScrollView.contentSize.height;
ScrollDirection scrollDirection;
if (offset > _lastContentOffset){
scrollDirection = ScrollDirectionUp;
} else {
scrollDirection = ScrollDirectionDown;
}
BOOL scrollIsAtTop = offset.y <= 0;
BOOL scrollIsAtBottom = offset.y + height >= contentHeight;
//If there is a pan upward and we aren't at the top of the outer
//scrollview cancel the gesture on the inner view
//downward vice versa
if (!((scrollIsAtTop && scrollDirection == ScrollDirectionUp)
|| (scrollIsAtBottom && scrollDirection == ScrollDirectionDown))) {
_innerCollectionView.panGestureRecognizer.enabled = NO;
_innerCollectionView.panGestureRecognizer.enabled = YES;
}
}
_lastContentOffset = offset.y;
}
這ALMOST作品,用大鍋向下站之一的副作用,當它擊中的底部,並要求用戶啓動一個新的姿態繼續滾動與內部集合。理想情況下,這種過渡會很順利,但我很難找出一種方法來做到這一點。我再次意識到滾動視圖內的滾動視圖並不理想,但如果我能解決這個小問題,一切都會很好,而不是試圖重新設計整個事情。
關於如何以平移手勢獲勝的方式處理雙滾動的任何想法,但在外滾動視圖不能再垂直移動時乾淨地轉換到內部集合?
你有視頻可以快速放在一起嗎?或者可能會壓縮項目? –
不容易,如果我很快就找不到修復程序,我可以放一個演示項目來重現它,但它需要我一個小時左右,所以我會繼續戰鬥,看看有沒有人有任何好的建議與此同時。 –
你有沒有想過這個?我目前有同樣的問題。 – ArtSabintsev