关于一个ViewController中有多个ScrollView点击Statusbar后ScrollView滚动到顶部的问题。

首先,我要说的是。当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 一下,你的支持是我最大的动力。


你可能感兴趣的:(关于一个ViewController中有多个ScrollView点击Statusbar后ScrollView滚动到顶部的问题。)