liangdrime / SwipeTableView

Both scroll horizontal and vertical for segment scrollview which have a same header. — 类似半糖、美丽说主页与QQ音乐歌曲列表布局效果,实现不同菜单的左右滑动切换,同时支持类似tableview的顶部工具栏悬停(既可以左右滑动,又可以上下滑动)。兼容下拉刷新,自定义 collectionview实现自适应 contentSize 还可实现瀑布流功能
MIT License
2.29k stars 444 forks source link

上拉加载问题 #44

Open JKjiangnan opened 7 years ago

JKjiangnan commented 7 years ago

我的header设置的比较高, header+section 满屏了, 这时候上拉加载, 每次只增加一条或两条数据, 刷新之后 会跳到顶部, 效果不理想, 该如何改进

liangdrime commented 7 years ago

可能是你刷新的方式不对。如果你不是要重置页面,就不要调用SwipeTableView-reloadData:,此时若只是刷新当前的 itemview,就只需要更新数据源,然后调用当前itemView自己的刷新就行了,比如,table\collection 就直接调用 table\collection 的-reloadData:方法。

JKjiangnan commented 7 years ago

没有调用SwipeTableView 的刷新, 刷新的是当前的itemview 中的tableview

JKjiangnan commented 7 years ago

我用你的demo试的 数据较少时候, 上拉刷新后也会跳到顶部, 我每次加载两条数据, 上拉加载 放在 CustomTableView 中 用的mj_footer

liangdrime commented 7 years ago

刚才测了一下,确实有这个问题。

目前,使用 MJ 的 backfooter 便会造成这个问题。

问题出现在 mj 结束刷新动画改变 inset 时造成的。在2.x 版本中不会对滚动中的 item 的 offset 做存储,所以在刷新之后,swipe 在 KVO 中不能对 offset 做保存恢复,而mj 对 insert 的动画处理导致 offset 根据内容重新调整。同时,3.0版本中,由于 inset 变化出发 scrollview 的滚动代理,当前 item 的 offset 的记录也因为 offset 的重新调整而变化。

解决的话,建议使用3.0版本同时不使用 backfooter;或者对 backfooter 继承自定义,修改下-setState:方法,在改变 insert 时对 offset 不做更改;或者在 swipe 的代码中,对 MJ 的-setSate:以及动画执行的状态监听,在结束刷新时不做 offset 的更改或者记录。

1284115201 commented 7 years ago

我上拉加载也会跳到顶部,请问目前有什么好的解决方法么?