objective-c – UIRefreshControl跳转和闪存问题

我有一个内置UIRefreshControl的UITableViewController.我有两个问题,我想修复刷新动画.

>当我拖放表视图时,它开始从我们的服务器更新数据.如果用户继续拖动,则会发生明显的偏移跳跃.
>刷新操作结束时,表视图会隐藏刷新控件的动画.完成隐藏后,控件会闪烁几帧.

该控件是从UIStoryboard设置的.我从那里设置了目标和色调.当操作触发时,我的代码刷新来自我们服务器的数据,服务器在服务器响应时有回调.我从那里停止刷新控制:

dispatch_async(dispatch_get_main_queue(), ^{
   [self.refreshControl endRefreshing];
});
...
[self.tableView reloadData];

我做错了什么或UIRefreshControl只是iOS 11中的错误?

最佳答案 我遇到了类似的问题,这就是我最终修复它的方式:

>需要设置“估计的行高”属性.否则,reloadData()会导致明显的跳转.这是解释here
>在用户仍在拖动时调用endRefreshing()也会导致明显的跳转.为了避免这种情况

>当我从服务器接收新数据时,我会检查用户是否仍在拖动(UIScrollView.isDragging).如果是这种情况,那么我不会立即调用endRefreshing(),而是设置一个标志.
>我覆盖scrollViewDidEndDragging并检查那里的标志;如果设置,那么我调用endRefreshing()并清除标志.

点赞