在UIScrollView中嵌入UICollectionView几乎完美无缺

Emi*_*iOS 7 gesture-recognition uiscrollview ios uiview-hierarchy uicollectionview

背景

我嵌入了一个UICollectionView内部,UIScrollView它的工作几乎完美.

目标

可滚动元素一旦到达contentViews的末尾就应该无缝地传递滚动.当我向下滑动UIScrollView时,它应向下滚动,以便UICollectionView占据屏幕的约90%,然后继续滚动collectionView.反之亦然,当我向上滚动collectionView并到达collectionView内容的顶部时,scrollview应该开始向上滚动.

问题

1)当我向上滚动集合视图时,它会滚动到顶部并停止.如果我向下滑动几次它仍会弹出collectionView而不是向上滚动scrollView.我必须再次"故意"点击collectionView,以便让父ScrollView向上滚动.

见gif:
双反弹

我想它与某些事情有关,CancelContentTouches但我无法得到正确的组合.

2)当我向下滚动时,滚动视图到达contentView的末尾时,它会停止并弹回.

见gif:
向下滚动并坚持下去

注意:我意识到不建议在UIScrollView中放置UICollectionView.我尝试了下面列出的替代方案,但是通过将我的顶视图放在标题中我无法达到预期的效果.我希望能够独立滚动,所以我决定使用scrollview/collectionView组合.

查看层次结构

MainViewController
- ScrollView
- 配置文件统计
- CollectionViewContainerView
--- CollectionView

资源其他人希望将collectionViews放入scrollViews由于某种原因:
我试过它们,但它们不能用于我的用例.

Lio*_*ion 1

如果您在另一个滚动视图或其子类中使用滚动视图或其子类,那么就会发生这种情况。

现在,你可以做一件事。禁用滚动(推荐使用内部滚动视图)并实现类似滚动视图的委托scrollViewDidScroll或其他更合适的委托,并手动滚动内部滚动视图(通过设置content offset内部滚动视图)。