我正在开发我的第一个iPhone应用程序,我非常感谢你们对我遇到的问题的看法。
我正在寻求水平和垂直实现滚动。我希望水平滚动被分页,而不是垂直分页(滚动“正常”)。将pagingEnabled设置为YES的单个UIScrollView将向两个方向分页。自然的解决方案是将UIScrollView嵌套在另一个中,但是当我这样做时,我无法让“内部”UIScrollView完全滚动。似乎外面的人正在“吃掉”所有的点击事件,例如:
UIScrollView : paging horizontally, scrolling vertically?
我在SDK 3.0中阅读了有关“内部滚动”的内容,实际上当我添加内部UITableView而不是UIScrollView时,滚动工作完美无瑕。由于UITableView子类UIScrollView,我想通过创建自己的UIScrollView子类可以实现我想要的行为。
这是正确的做法吗?如果是这样,这个子类应该是什么样的?
答案 0 :(得分:9)
现在可以使用SDK开箱即用。有关如何使用每个页面的视图控制器实现分页水平滚动的指南,请参阅Scrolling Madness和Apple'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