苹果系统为我们带来了一个很便利的功能,在长长的页面拖拽过程中,至于要点击一下顶部状态栏,便能回到页面最顶部,省去了漫长的滑动过程。但是有时在开发中,会遇到点击返回功能消失的现在,下面简单说说原因以及几种重现的方法。
先从实现方法说起,如果要恢复功能,首先我们第一个应该都是想到利用状态栏的属性或者方法,是否能直接实现。但是我们可以发现,UIStatusBar是不能点击去查看头文件的,那就意味着苹果并没有把这个属性暴露给我们,那么按照套路,必须得自己来解决。
那么思考方向可以为,如果让我们来写这个功能,那么应该如何实现?首先最简单的想法可以想到在状态栏上面添加一个等大的UIView,挡住原来状态栏的位置,用来拦截点按手势,并在实现方法中把偏移量(contentOffset)的Y值改为0来实现复位。
但是实际操作中我们可以发现,无论怎么添加,view始终会在状态栏下面,无法挡住状态栏。
其实究其原因,状态栏本质上是一个窗口(window)而不是一个控件,窗口与窗口之间没有了层级关系,所以这个方法并不能达到目的。但是按照这个方向,那我们可以继续考虑,直接创建一个窗口(UIWindow)代替UIView添加到状态栏上面来挡住系统状态栏。