所以我意识到在所有的红旗上都有嵌套的滚动视图,但是除了一个小问题之外,目前的所有设置实际上都工作得很好。一个滚动视图管理在一个集合中滚动,另一个处理整个集合视图上的缩放和平移。这一切都有效,但小问题来自放大和向下平移时,滚动视图在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