在 UIScrollView 中嵌入 UITableView/UICollectionView
Posted
技术标签:
【中文标题】在 UIScrollView 中嵌入 UITableView/UICollectionView【英文标题】:Embed UITableView/UICollectionView in UIScrollView 【发布时间】:2016-09-29 23:59:02 【问题描述】:我正在尝试在应用程序中构建二维导航,类似于 Snapchat 所做的。请参阅下图以了解我想要实现的目标。我试图通过将所有视图放在UIScrollView
中来做到这一点,然后手动创建方向锁以限制它永远无法滚动到空的左上角区域。这个想法来自here。这在一定程度上起到了作用,但UITableView
与UIScrollView
的合作并不多,似乎他们为触摸的所有权而战。我只能在先选择其中一行后才能滚动表格视图,并且我需要在表格视图之外触摸才能滚动回右侧。
我知道在UIScrollViews
中嵌入UITableViews
是Apple 的not recommended,甚至可能不鼓励:
重要提示:您不应将 UIWebView 或 UITableView 对象嵌入 UIScrollView 对象。如果这样做,可能会导致意外行为 因为两个对象的触摸事件可能会混淆和错误 处理。
但我没有看到其他方法来实现这一点。我还尝试使用两个单独的UIScrollViews
,一个用于水平滚动,另一个将嵌入第一个并控制所有垂直滚动。不过,我在设置它时遇到了问题,因为其中一个视图会使它的子视图变得相当奇怪。
如果只有一种方法可以禁用UIScollView
的水平或垂直平移手势识别器...我还尝试将UIScrollView
的delaysTouchesBegan
和canCancelContentTouches
设置为不同的值,没有任何运气。
【问题讨论】:
【参考方案1】:如果您想要的是 Snapchat 式的效果,您应该可以使用 UIPageViewController
进行横向分页,然后使用 UITableView
或 UIScrollView
进行纵向内容。
【讨论】:
以上是关于在 UIScrollView 中嵌入 UITableView/UICollectionView的主要内容,如果未能解决你的问题,请参考以下文章
在受限的 UIScrollView 中嵌入 UITableView 和其他 UIView
在 UIScrollView 中嵌入 UIStackView 时出现的问题
在 UIScrollView 中嵌入 UITableView/UICollectionView