This question already has answers here:
UIRefreshControl - beginRefreshing not working when UITableViewController is inside UINavigationController

(15个答案)


7年前关闭。




调用beginRefreshing 时,我看不到正在加载的微调器
[self.refreshControl beginRefreshing];

我的UITableViewController子类使用UIRefreshControl
// refresh
    UIRefreshControl * refreshControl = [UIRefreshControl new];
    [refreshControl addTarget:self action:@selector(refreshTableView) forControlEvents:UIControlEventValueChanged];
    self.refreshControl = refreshControl;

它与用户交互(当用户将 table 放下时)完美配合,然后可以看到微调器。

但是,当我在viewDidLoad上调用beginRefreshing时,我看不到微调器(仅当我将表格向下拖动时)。

笔记:
  • self.refreshControl引用是正确的
  • 在beginRefreshing之后,不会立即调用
  • reloadData或endRefreshing,但是存在较长的延迟时间(通过网络加载数据),因此我不会取消beginRefreshing。

  • 编辑 :
    仅当contentOffsettableView属性为0且我称为[self.refreshControl beginRefreshing]时,才会发生这种情况。漏洞?特色吗?

    最佳答案

    对我来说,这似乎是个错误,因为它仅在contentOffsettableView属性为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){
    
            }];
    
        }
    }
    

    关于ios6 - 调用beginRefreshing并且contentOffset为0时,UIRefreshControl不显示多刺,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16120797/

    10-10 19:28