首先,我要说的是。当ViewController中只用一个 ScrollView 的时候,不存在这个问题。
你只要去点击 statusbar(电池栏),这个ScrollView,根据苹果的默认设定他是可以滚动到顶部的。
废话不多说,重点来了。
那么为什么,当一个viewcontroller 中有多个 scrollView的是这个东西就失效了呢。
经过查阅资料,发现了这么一个属性。scrollsToTop。这个scrollView中的这个属性,根据字面上的意思就很明显了,就多个scrollView需要滚动到 top 的时候你需要设置一下。
// When the user taps the status bar, the scroll view beneath the touch which is closest to the status bar will be scrolled to top, but only if its `scrollsToTop` property is YES, its delegate does not return NO from `shouldScrollViewScrollToTop`, and it is not already at the top.
// On iPhone, we execute this gesture only if there's one on-screen scroll view with `scrollsToTop` == YES. If more than one is found, none will be scrolled.
@property(nonatomic)BOOLscrollsToTop__TVOS_PROHIBITED;// default is YES.
我就不翻译了,有兴趣的可以百度,google 一下。
下面我们举个例子把,假如viewcontroller中有一个scrollView,scrollView中有三个tableview,我分别叫它们 pageTableView1、pageTableView2、pageTableView3。怎么设置才可以有我们想要的效果呢?
这里是具体需要怎设置,下面这里是代码:
self.contentView.scrollsToTop=NO;
self.pageTableView1.scrollsToTop=NO;
self.pageTableView2.scrollsToTop=NO;
self.pageTableView3.scrollsToTop=NO;
openScrollview.scrollsToTop=YES;//openScrollview 就是我们需要设置开启这个属性的scrollview
这里是效果图:
效果图
总结:如果这个 viewcontroller 中还有其他的 scrollView,包括子视图中scrollView,也需要禁止掉scrollsToTop属性,不然也会没有效果。
其实就是如此简单,最后放上代码地址:https://github.com/ysghome/ClickStatusbarSrollsToTop
如果你觉得有帮助到你,请顺便 star 一下,你的支持是我最大的动力。
网友评论