UIRefreshControl:UITableView的“卡住”,而刷新(UIRefreshCon

2019-08-02 18:55发布

我在实施UIRefreshControl一个问题 - 在,当你拉下来,“斑点”工作完全正常,并刷新微调工作正常,但的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文档发现什么

Answer 1:

你可以改变以下

- (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:将调用主线程上,并且所有用户界面更新所使用的主线程。 所以,如果你使用主线程“的代码来获取新数据”,它会“卡壳”



文章来源: UIRefreshControl: UITableView 'stuck' while refreshing