早在iOS 2.0 的时候,OC就给出了这个名为 scrollsToTop 的属性,可以允许用户通过点击状态栏返回可滚动页面的顶部,而且这个属性的默认值为YES。所以这是一个不需要实现的功能,官方给出的两个代理方法也帮助我们完美的定制这个功能。
1. scrollViewShouldScrollTop
和其他代理一样,scrollsToTop 相关代理允许你在点击之后选择控制是否执行此操作,我们可以通过这个代理方法选择符合自己需求方案的时机执行。
2. scrollViewDidScrollToTop:message
我们可以在这个代理方法中获得 scrollsToTop 执行完毕的时机,而后继续执行自己想执行的操作。
除了官方给出的一系列便利之外,scrollsToTop 在使用过程中还有一个限制
在手机上,如果同时存在多个 scrollsToTop 设置为 YES 的情况,则这个属性没有效果。换言之,系统懵圈了!她选择放弃。而 scrollsToTop 的默认值是 YES 。也就是说,如果我们同一界面存在多个 scrollView (包含子类,后省略),则需要将除需要执行 scrollsToTop 效果的 scrollView 之外的所有 scrollView 设置
scrollView.scrollsToTop = NO;
如果是 scrollView 重叠布局,很可能会出现滚动冲突的情况,所以我们很少会使用这种方式布局。出现这种情况多是页面中存在多个小区域需要滑动显示,比如横滑显示更多内容,以提高屏幕空间利用效率。所以在这种布局中,如果我们需要为整个页面保留 scrollsToTop 的效果,就要注意对有限个或量产的滑动区域进行设置。