【发布时间】:2018-06-22 13:26:45
【问题描述】:
背景
我在UIScrollView 中嵌入了UICollectionView,它几乎可以完美运行。
目标
一旦到达 contentViews 的末尾,可滚动元素就应该无缝地离开滚动条。当我在 UIScrollView 上向下滑动时,它应该向下滚动,以便 UICollectionView 占据大约 90% 的屏幕,然后继续滚动 collectionView。反之亦然,当我在 collectionView 上向上滚动并到达 collectionView 内容的顶部时,scrollview 应该开始向上滚动。
问题
1) 当我在 collectionView 上向上滚动时,它会滚动到顶部并停止。如果我向下轻弹几次,它仍然会反弹 collectionView 而不是向上滚动 scrollView。为了让父 ScrollView 向上滚动,我必须再次“故意”点击 collectionView 一次。
我想这与CancelContentTouches 有关,但我无法获得正确的组合。
2) 当我向下滚动时,同样的事情,一旦滚动视图到达 contentView 的末尾,它就会停止并弹跳。
注意:我意识到不建议将 UICollectionView 放在 UIScrollView 中。我尝试了下面列出的替代方案,但我无法通过将我的顶视图放在标题中来达到预期的效果。我希望能够独立滚动两者,所以我决定使用 scrollview/collectionView 组合。
查看层次结构
主视图控制器
- 滚动视图
-- 个人资料统计
-- CollectionViewContainerView
--- 集合视图
资源其他人出于某种原因希望将 collectionViews 放入 scrollViews:
我尝试了它们,但它们不适用于我的用例。
【问题讨论】:
-
我确定这是第一响应者的问题。看你如何通过它。也许在某个偏移量处,您可以使用 becomeFirstResponder()。可能必须同时在滚动视图上结合辞职第一响应者。反之亦然
-
您可以在 Twitter 的 iOS 应用的配置文件视图中看到平滑滚动。我试图复制它并取得与您相同的进展,然后卡住了。我在开发此功能时尝试了@abigson007 的答案,但它不起作用,因为 CollectionView 上方的视图也需要响应滚动事件。
-
你有没有最终弄清楚这个?
标签: ios uiscrollview uicollectionview gesture-recognition uiview-hierarchy