SwipeTableView icon indicating copy to clipboard operation
SwipeTableView copied to clipboard

上拉加载问题

Open JKjiangnan opened this issue 8 years ago • 6 comments

JKjiangnan avatar Feb 10 '17 03:02 JKjiangnan

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

JKjiangnan avatar Feb 10 '17 03:02 JKjiangnan

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

liangdrime avatar Feb 10 '17 04:02 liangdrime

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

JKjiangnan avatar Feb 10 '17 05:02 JKjiangnan

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

JKjiangnan avatar Feb 10 '17 05:02 JKjiangnan

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

目前,使用 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 的更改或者记录。

liangdrime avatar Feb 10 '17 07:02 liangdrime

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

1284115201 avatar Jul 19 '17 13:07 1284115201