Search code examples
objective-coverlayios7uirefreshcontrol

UIRefreshControl text overlays on refresh-indicator


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


Solution

  • 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];
        });
    
    }