主叫beginRefreshing和contentOffset时UIRefreshControl未示

2019-08-31 15:10发布

这个问题已经在这里有一个答案:

  • UIRefreshControl - beginRefreshing不工作时的UITableViewController是里面的UINavigationController 14个回答

打电话时,我无法看到加载微调beginRefreshing

[self.refreshControl beginRefreshing];

我的UITableViewController子类使用一个UIRefreshControl

// refresh
    UIRefreshControl * refreshControl = [UIRefreshControl new];
    [refreshControl addTarget:self action:@selector(refreshTableView) forControlEvents:UIControlEventValueChanged];
    self.refreshControl = refreshControl;

它与用户的交互工作完美(当用户删除表下),那么微调是可见的。

但是,当我打电话beginRefreshing上viewDidLoad中,我没有看到微调(只有当我拖动表下)。

笔记:

  • self.refreshControl参考是正确的

  • reloadData或endRefreshing不beginRefreshing后立即调用,但还有很长的时间延迟(通过网络加载数据),所以我不取消beginRefreshing。

编辑: 当这只发生contentOffset的财产tableView是0,我叫[self.refreshControl beginRefreshing] 错误? Feauture?

Answer 1:

它看起来像我的错误,因为只有当occures contentOffset的财产tableView0

我固定的用下面的代码(用于的UITableViewController法):

- (void)beginRefreshingTableView {

    [self.refreshControl beginRefreshing];

    if (self.tableView.contentOffset.y == 0) {

        [UIView animateWithDuration:0.25 delay:0 options:UIViewAnimationOptionBeginFromCurrentState animations:^(void){

            self.tableView.contentOffset = CGPointMake(0, -self.refreshControl.frame.size.height);

        } completion:^(BOOL finished){

        }];

    }
}


Answer 2:

你修复看起来不错,但我不认为这是一个错误。

当beginRefreshing方法是手动调用,

如果没有行/电池可用它是有道理的自动刷新出现的控制。 但是,当有一些细胞可用,当我们调用手动开始刷新(我们定期刷新基于定时器A方案),那么它不应该动画/改变内容的偏移,因为它会分散用户,如果他看到/阅读内容一些可见的细胞。



文章来源: UIRefreshControl not showing spiny when calling beginRefreshing and contentOffset is 0 [duplicate]