I use UIRefreshControl in a UITableView:
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(refresh)
forControlEvents:UIControlEventValueChanged];
self.refreshControl = refreshControl;
With refresh handler:
-(void)refresh {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// (...some long running operation...)
dispatch_async(dispatch_get_main_queue(), ^{
[self.refreshControl endRefreshing];
});
});
}
During the long running operation I make the application inactive pressing Home button. After that I make the application active again. The spinner freezes (stops spinning) and there is no way to return it to the initial state.
How to fix it?
I think it is a bit delayed answer but , today I saw similar issue on ios 7 , ios 6 continued spinning ,
here is a little workaround for this
it will stop and start again spinning , but it only happened on ios7 with me , so maybe you should check not to do it on ios6
This still is an issue in iOS11. The solution needs to be modified a bit though, otherwise the refresh control will spin too fast
In iOS 11 this approach works much better than the others
This is what worked for me
Swift 3 and Swift 4:
Swift 2.3: