在本次的项目开发中,碰到了一个头疼的问题,MJRefresh下拉刷新后mj_header没回弹到原来的位置,而是位置下移,再次快速下拉刷新,有可能会出现位置再次下移的情况。
针对这个问题,在网上查找了不少资料,好多都说在viewWillDisappear:方法中调用 [self.tableView.mj_header endRefreshing]方法结束刷新。按照网上的方法试了试,发现该方法是无效的。于是不得不继续查找。
最后终于找到了一个有效的方法,找到MJRefresh的源文件,然后找到mjrefreshheader.m文件,把该文件中scrollViewContentOffsetDidChange:方法中的if(self.window == nil) return注释掉就好了。此问题一般在切换Controller后有概率会出现,因为当当前Controller不可见时,view.widonw 会为nil,代码就不会继续执行复原操作。
但解决办法有一个不好的地方,一般MJRefresh库都是通过Pod文件导入的,这个解决办法只能去修改Pod库中的文件。但暂时又没有其他办法,期待大家谁有好的解决办法分享出来。