UIRefreshControl:刷新时UITableView“卡住”

我有一个实现UIRefreshControl的问题 – 当你拉下来,“blob”工作得很好,刷新微调工作正常,但tableView不会滚动到微调,而刷新。 而是保持原来的状态,直到刷新完成,然后返回到屏幕的顶部

清爽的代码是:

- (void)viewDidLoad { self.refreshControl = [[UIRefreshControl alloc] init]; [self.refreshControl addTarget:self action:@selector(refreshView:)forControlEvents:UIControlEventValueChanged]; } - (void)refreshView:(UIRefreshControl *)refresh { dispatch_async(dispatch_get_main_queue(), ^{ (...code to get new data here...) [self.refreshControl endRefreshing]; } } 

我发现,没有dispatch_async,即使刷新微调不起作用 – 被拉下来的位显示为白色

有没有人有任何线索我可能做错了? 我发现的所有实现示例似乎与我正在做的匹配,并且我没有在API文档中find任何暗示我错过了任何东西的东西

您可以更改为以下

 - (void)refreshView:(UIRefreshControl *)refresh { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // (...code to get new data here...) dispatch_async(dispatch_get_main_queue(), ^{ //any UI refresh [self.refreshControl endRefreshing]; }); }); } 

-refreshView:将在主线程上调用,所有的UI更新都使用主线程。 所以,如果你使用“代码获取新数据”主线程将“卡住”