UIRefreshControl text overlays on refresh-indicator

woozly picture woozly · Sep 27, 2013 · Viewed 9.4k times · Source

I start with programming under XCode 5 with iOS 7 SDK. And when I create UITableViewController with UIRefreshControl with 'attributedText' I've got text overlayed on top of UIRefreshControl graphics (circle progress animation).

But when I pull down and release my finger, text jumps to its normal position. Why it happened?

    UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
    [refreshControl addTarget:self action:@selector(updateDeviceList) forControlEvents:UIControlEventValueChanged];
    refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"Update Devices States"];

    self.refreshControl = refreshControl;

Before pulling down to the end:

Before pulling down to the end

After UIRefreshControl release:

After UIRefreshControl release

Answer

jeilsoft picture jeilsoft · Dec 27, 2013

Please try this.

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
    refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"Pull to Refresh"];
    [refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];
    self.refreshControl = refreshControl;

    dispatch_async(dispatch_get_main_queue(), ^{
        [self.refreshControl beginRefreshing];
        [self.refreshControl endRefreshing];
    });

}