MJRefresh icon indicating copy to clipboard operation
MJRefresh copied to clipboard

解决MJRefreshHeader中异步更改UI为Refreshing状态导致内部状态和UI状态不一致的问题

Open myronlee opened this issue 9 years ago • 1 comments

详细描述可见我的博客文章 http://www.jianshu.com/p/0ecaf3d67940

在MJRefreshHeader类setState方法中“更改UI为refreshing状态”的操作是异步的。也就是说,设置Refreshing状态时,设置内部状态和设置UI状态被分离开了,如果在中间插入了设置内部状态(比如Idle)的操作可能会导致内部状态和UI状态不一致的问题。另外,MJRefreshendRefreshing方法中“设置状态为Idle”操作是异步的。 出现问题的原因就是两次异步,由于执行顺序的原因,导致内部状态和UI状态不一致。

设置refreshing状态如果需要异步,应该像设置idle状态一样,整体异步(beginRefreshing应该参考endRefreshing的实现,需要异步的话)这边不了解,可以自行修改

myronlee avatar Sep 20 '16 03:09 myronlee

我的项目里面用了最新的MJRefresh,但是首次进入页面的时候,UITableView顶部就会有刷新提示显示出来,但是这时候并没有在刷新。。。 当我继续下拉的时候才会触发刷新动作,也就是UITableView的顶部多出了一块。

sh0rt2020 avatar Dec 12 '16 12:12 sh0rt2020