iPhone - 嵌套UIScrollViews进行水平分页和垂直滚动

时间:2010-07-12 18:44:26

标签: iphone scroll uiscrollview paging

我正在开发我的第一个iPhone应用程序,我非常感谢你们对我遇到的问题的看法。

我正在寻求水平和垂直实现滚动。我希望水平滚动被分页,而不是垂直分页(滚动“正常”)。将pagingEnabled设置为YES的单个UIScrollView将向两个方向分页。自然的解决方案是将UIScrollView嵌套在另一个中,但是当我这样做时,我无法让“内部”UIScrollView完全滚动。似乎外面的人正在“吃掉”所有的点击事件,例如:

UIScrollView : paging horizontally, scrolling vertically?

我在SDK 3.0中阅读了有关“内部滚动”的内容,实际上当我添加内部UITableView而不是UIScrollView时,滚动工作完美无瑕。由于UITableView子类UIScrollView,我想通过创建自己的UIScrollView子类可以实现我想要的行为。

这是正确的做法吗?如果是这样,这个子类应该是什么样的?

5 个答案:

答案 0 :(得分:9)

现在可以使用SDK开箱即用。有关如何使用每个页面的视图控制器实现分页水平滚动的指南,请参阅Scrolling MadnessApple's UIPageControl sample

作为子视图添加到外部UIScrollView的嵌套UIScrollViews应该与容器具有相同的帧高度。如果执行此操作,则外部UIScrollView将通过垂直滚动事件传递到子视图。我的应用程序有三个级别的UIScrollView和UIWebView嵌套,我发现Cocoa非常聪明地将事件传递给我想要的那个,只要我设置我的帧大小,以便只有一个视图可以滚动(contentSize> frame)在每个轴上。

答案 1 :(得分:0)

我几天来一直使用Andrey Tarantsov这本伟大的文章:SoloComponents

您可以将其用作水平UITableView"支持分页和查看回收。 制作精良,完美的可可风格设计。

答案 2 :(得分:0)

根据Dylan的回答,在我的情况下,我实际上还必须使内容大小高度相等,以便父级和嵌套UIScrollViews使嵌套的UIScrollView垂直滚动。像Dylan所解释的那样只做“与容器相同的框架高度”是不够的:

parentScrollView.contentSize = CGSizeMake(parentScrollView.contentSize.width, desiredContentHeight);
nestedScrollView.contentSize = CGSizeMake(nestedScrollView.frame.size.width, desiredContentHeight);

答案 3 :(得分:0)

Dylan说的是什么。并且,也许对此主题感兴趣 - 您不需要在主“分页”UIScrollView中启用滚动,只需启用分页和方向锁定。这似乎可以确保所有垂直滚动提示都转到嵌套的,固定大小的垂直滚动NSScrollViews。它可以回溯至至少iOS 9。

答案 4 :(得分:0)

如果您尝试使用Twitter个人资料UI之类的方法,则可以通过将标头视图和底部滚动视图放在父滚动视图中,并在其后添加另一个滚动视图来实现。

底层滚动视图负责调整页眉和底部的内容偏移量。它的contentsize也可以通过内部项目的高度进行调整。

我告诉它看起来很复杂,最好看一下代码 https://github.com/OfTheWolf/Twitterprofile