Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

myronlee
Copy link

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

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

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

setSate中同步更改UI状态,异步更改UI状态将有可能导致“内部状态和UI状态不一致”的问题,如果中间设置state为idle的话(idle
状态更改UI状态是同步的)。
@sh0rt2020
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants