2010-07-12 65 views
11

我正在开发我的第一个iPhone应用程序,我将非常感谢您对我遇到的问题的输入。iPhone - 为水平分页和垂直滚动嵌套UIScrollViews

我正在寻找实现水平和垂直滚动。我希望水平滚动分页,而不垂直分页(滚动“正常”)。将pagingEnabled设置为YES的单个UIScrollView将双向翻页。自然的解决方案将嵌套在另一个UIScrollView,但是当我这样做时,我不能让“内部”UIScrollView滚动。看来外一个是“吃”了所有的点击事件,像:

UIScrollView : paging horizontally, scrolling vertically?

我读到一些关于“内滚动”被当在SDK 3.0改善,实际上当我添加内的UITableView,而不是一个UIScrollView的滚动工作完美无瑕。由于UITableView的子类UIScrollView我想我应该可以通过创建我自己的UIScrollView的子类来实现我想要的行为。

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

回答

9

这可以立即与SDK一起使用。请参阅Scrolling MadnessApple's UIPageControl sample以获取有关如何使用每个页面的视图控制器实现分页水平滚动的指导原则。

作为子视图添加到外部UIScrollView中的嵌套UIScrollView应具有与容器相同的框架高度。如果你这样做,那么外面的UIScrollView将通过垂直滚动事件传递给子视图。我的应用程序有三个级别的UIScrollView和UIWebView嵌套,我发现Cocoa真的很聪明,可以将事件传递给我想要的事件,只要设置了我的框架大小,以便只有一个视图可以滚动(contentSize> frame)每个轴。

+0

谢谢你。这确实可以开箱即用。我相信垂直滚动页面的顶层视图必须是UIScrollView。最初,我有一个UIView下的垂直滚动条,这不能按需要工作。还要记住设置垂直滚动条的contentSize。 – user621267 2012-06-21 08:44:19

0

我一直在使用由安德烈Tarantsov这个伟大的lib几个月:SoloComponents

您可以使用它作为一个“水平的UITableView”与分页和视图循环支持。 做得很好,完美的可可风格设计。

0

基于Dylan的回答,在我的情况下,我实际上也必须使内容大小高度与父级和嵌套UIScrollViews相同,以使嵌套UIScrollView垂直滚动。只制作“与容器相同的框架高度”,不如迪伦解释的那样:

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