iOS 10.0 UIRefreshControl not showing indicator

时光怂恿深爱的人放手 提交于 2019-11-30 04:49:41

before the code:

[refreshControl beginRefresh]

insert the code:

[refreshControl layoutIfNeeded]

Delaying call to refresh in viewDidLoad worked for me:

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [self.refreshControl beginRefreshing];
});

You need to call [self.view layoutIfNeeded] to fix it in iOS 10. For my case it was enough to put the call to viewDidLoad (I was using storyboard in that project). For other cases viewWillAppear fits better.

- (void)viewDidLoad
  {
   [super viewDidLoad];
   [self.view layoutIfNeeded];
   ...

This is a known and reported bug in iOS 10.

Radar rdar://27468436

I'm not sure if there are any workarounds.

Same as @jpros answer but in swift

if #available(iOS 10.0, *) {
    tableView.refreshControl = refreshControl
} else {
    tableView.addSubview(refreshControl)
}
refreshControl.layoutIfNeeded()
refreshControl.beginRefreshing()

I was only able to fix this by calling, from viewDidLoad():

refreshControl.layoutIfNeeded()

In iOS10, we should add the UIRefreshControl using setRefreshControl of UITableView or UICollectionView.

if([self.tableView respondsToSelector:@selector(setRefreshControl:)]) {
    [self.tableView setRefreshControl:self.refreshControl];
}
else {
    [self.tableView addSubview:self.refreshControl];
}
[self.refreshControl layoutIfNeeded];
[self.refreshControl beginRefreshing];

If your refresh indicator is not showing try enabling Bounce Vertically in Interface Builder for table view or scroll view.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!