我有一個父滾動視圖(不是直接子視圖)中包含的子滾動視圖。我想要的是,只要子滾動視圖到達其內容的結尾,父滾動視圖就會開始沿相同的方向滾動。當子滾動視圖到達結束時滾動父滾動視圖
這類作品開箱即用的,但不是真的。現在我必須擡起手指,讓父滾動視圖在孩子到達終點後開始滾動。
對此有何看法?
編輯:
的什麼我正在尋找可以在Snapchat通過向右滑動在表視圖細胞揭示聊天控制器可以看到一個例子。
我有一個父滾動視圖(不是直接子視圖)中包含的子滾動視圖。我想要的是,只要子滾動視圖到達其內容的結尾,父滾動視圖就會開始沿相同的方向滾動。當子滾動視圖到達結束時滾動父滾動視圖
這類作品開箱即用的,但不是真的。現在我必須擡起手指,讓父滾動視圖在孩子到達終點後開始滾動。
對此有何看法?
編輯:
的什麼我正在尋找可以在Snapchat通過向右滑動在表視圖細胞揭示聊天控制器可以看到一個例子。
不知道如果我理解正確的有哪些呢不是直接孩子意思。但是,只要你到達子視圖滾動的末尾,iOS應該自動爲你做,它應該讓你滾動父滾動。
爲此,您需要實現爲孩子:
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate: (BOOL)decelerate{
scrollView.bounces = NO;
}
scrollView.bounces = NO
不讓滾動視圖跳回上結束滾動。所以它只是停留在停止滾動的位置。
然後你需要觸發從父爲子scrollViewDidScroll
方法滾動。
類似的東西來:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
CGFloat scrollViewHeight = scrollView.frame.size.height;
CGFloat scrollContentSizeHeight = scrollView.contentSize.height;
CGFloat scrollOffset = scrollView.contentOffset.y;
CGFloat offset = scrollContentSizeHeight - (scrollOffset + scrollViewHeight);
if (offset <= 0)
[self.parentView setContentOffset:CGPointMake(self.parentView.contentOffset.x, self.parentView.contentOffset.y + diffOffset) animated:YES];
}
哪裏diffOffset
是你想要的parentScroll滾動的距離。
您可能希望更先進的解決方法。
例如可以實現
scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
讓你知道什麼是滾動的velocity
,比較targetContentOffset
到scrollContentSizeHeight
和scrollViewHeight
應該讓你知道,這個特殊的滾動即將結束拖動達到結束滾動查看內容。
而且你可以計算diffOffset
和animationTime
更準確。
這可能是很好的阻止滾動的子視圖時,它不是父滾動中完全可見,這樣的滾動能力似乎只有當你向上滾動直到一定的位置。
感謝您的回覆,我一定會嘗試您的解決方案。 –
只是在一個案例中,我創建了一個簡單的測試項目,在UIScrollView中垂直放置兩個'UITableView',它確實有效。如果需要,我可以把它放在某個地方。 – teamnorge
以下是此任務的一個很好的示例回購:https://github.com/goktugyil/EZSwipeController – Esqarrouth