在 UIScrollView 中嵌入 UITableView/UICollectionView

Posted

技术标签:

【中文标题】在 UIScrollView 中嵌入 UITableView/UICollectionView【英文标题】:Embed UITableView/UICollectionView in UIScrollView 【发布时间】:2016-09-29 23:59:02 【问题描述】:

我正在尝试在应用程序中构建二维导航,类似于 Snapchat 所做的。请参阅下图以了解我想要实现的目标。我试图通过将所有视图放在UIScrollView 中来做到这一点,然后手动创建方向锁以限制它永远无法滚动到空的左上角区域。这个想法来自here。这在一定程度上起到了作用,但UITableViewUIScrollView 的合作并不多,似乎他们为触摸的所有权而战。我只能在先选择其中一行后才能滚动表格视图,并且我需要在表格视图之外触摸才能滚动回右侧。

我知道在UIScrollViews 中嵌入UITableViews 是Apple 的not recommended,甚至可能不鼓励:

重要提示:您不应将 UIWebView 或 UITableView 对象嵌入 UIScrollView 对象。如果这样做,可能会导致意外行为 因为两个对象的触摸事件可能会混淆和错误 处理。

但我没有看到其他方法来实现这一点。我还尝试使用两个单独的UIScrollViews,一个用于水平滚动,另一个将嵌入第一个并控制所有垂直滚动。不过,我在设置它时遇到了问题,因为其中一个视图会使它的子视图变得相当奇怪。

如果只有一种方法可以禁用UIScollView 的水平或垂直平移手势识别器...我还尝试将UIScrollViewdelaysTouchesBegancanCancelContentTouches 设置为不同的值,没有任何运气。

【问题讨论】:

【参考方案1】:

如果您想要的是 Snapchat 式的效果,您应该可以使用 UIPageViewController 进行横向分页,然后使用 UITableViewUIScrollView 进行纵向内容。

【讨论】:

以上是关于在 UIScrollView 中嵌入 UITableView/UICollectionView的主要内容,如果未能解决你的问题,请参考以下文章

在受限的 UIScrollView 中嵌入 UITableView 和其他 UIView

在 UIScrollView 中嵌入 UIStackView 时出现的问题

在 UIScrollView 中嵌入 UITableView/UICollectionView

UIScrollView 是不是仅适用于嵌入在导航控件中的视图控制器?

从嵌入在 UIScrollView 中的表中推送视图控制器

iPhone:在嵌入式 UITextView 中输入文本时滚动 UIScrollview