UIRefreshControl在调用beginRefreshing并且contentOffset为0时没有显示旋转。

11

当调用beginRefreshing时,我无法看到加载旋转器。

[self.refreshControl beginRefreshing];

我的UITableViewController子类使用了UIRefreshControl

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

当用户交互时(当用户将表格下拉时),它可以完美地工作,然后旋转器可见。

但是当我在viewDidLoad上调用beginRefreshing时,我看不到旋转器(只有当我拖动表格时才能看到)。

注:

  • self.refreshControl引用正确

  • reloadData或endRefreshing不会立即在beginRefreshing之后调用,但存在长时间延迟(通过网络加载数据),因此我不会取消beginRefreshing。

编辑: 只有当tableViewcontentOffset属性为0并且我调用[self.refreshControl beginRefreshing]时才会发生。Bug?特点?


重复的问题在哪里? - shontauro
2个回答

30

在我看来,这似乎是一个错误,因为它只会在tableViewcontentOffset属性为0时发生。

我通过以下代码解决了这个问题(适用于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){

        }];

    }
}

这个有效。感谢您的发布。 - SayeedHussain
1
奇怪的是,我在一些UITableView上遇到了这个问题,而在其他的UITableView上却没有出现... - David
1
如果您的TableView位于导航栏下方,则offset将不是0,而是-self.topLayoutGuide.length - Diogo T
在整整一天的努力奋斗后,你终于找到了解决方案。 - amar

3
你的修复看起来很好,但我不认为这是一个bug。
当手动调用beginRefreshing方法时,
如果没有可用的行/单元格,则自动显示刷新控件是有意义的。
但是当有一些单元格可用,并且我们手动调用begin refresh(根据计时器定期刷新的情况),则它不应该动画/更改内容偏移量,因为如果用户正在查看/阅读某个可见单元格中的内容,这将会分散他的注意力。

4
当我将section和row的数量设置为0时,我尝试调用“-beginRefreshing”方法。但刷新控件仍未显示。如果我没记错的话,在iOS 6上这是有效的。所以这可能是一个bug。 - Hlung
Swift4: `self.uiRefresh?.beginRefreshing() UIView.animate(withDuration: 0.25, delay: 0, options: UIViewAnimationOptions.beginFromCurrentState, animations: { self.tableView.contentOffset = CGPoint(x: 0, y: -(self.uiRefresh?.frame.size.height ?? 0)) }, completion: nil)` - Siempay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接