UITableView UIRefreshControl no muestra su vista la primera vez

Agregué la funcionalidad de UIRefreshControl en mi proyecto que usa una UITableView. La aplicación funciona al get inputs de un service web a una vista de tabla. A continuación se muestra el código que he utilizado para agregar UIRefreshControl:

- (void)viewDidLoad { [super viewDidLoad]; UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init]; refreshControl.tintColor = [UIColor grayColor]; refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"Updating New Entries"]; [refreshControl addTarget:self action:@selector(pullToRefresh) forControlEvents:UIControlEventValueChanged]; self.refreshControl = refreshControl; [self pullToRefresh]; } - (void) pullToRefresh { counter = 1; [self fetchEntriesNew:counter]; // My code for updating table view [self performSelector:@selector(updateTable) withObject:nil afterDelay:2]; } - (void)updateTable { [self.tableView reloadData]; [self.refreshControl endRefreshing]; } 

Ahora, si juro para actualizar, se actualiza agregando nuevas inputs si hay alguna y me muestra la siguiente vista en la parte superior de la vista de tabla:

introduzca la descripción de la imagen aquí

Todo funciona bien, excepto cuando la aplicación se inicia o abre por primera vez, no muestra la vista que he mostrado en la image anterior, aunque actualiza la vista de tabla. Quiero que muestre la vista de control de actualización cada vez que la actualiza. ¿Alguien puede señalar lo que estoy haciendo mal? ¡Gracias!

ACTUALIZACIÓN: He agregado [self refreshControl beginRefreshing] y ahora se muestra la vista giratoria de UIRefreshControl pero está por encima de la primera input de tableview. ¿Alguien puede señalar cómo corregirlo?

Este problema me había desconcertado por un time. Descubrí que los dispositivos iOS de 4 pulgadas no tienen este problema, pero los dispositivos de 3,5 pulgadas.

Traté de descubrir las diferencias entre la primera vez que el refreshControl comienza a restablecerse y cuando ejecuté un gesto de extracción. Es la operación de extracción.

Y revisé el documento de Apple en UIRefreshControl. Dice que The control does not initiate the refresh operation directly. Instead, it sends the UIControlEventValueChanged event when a refresh operation should occur. The control does not initiate the refresh operation directly. Instead, it sends the UIControlEventValueChanged event when a refresh operation should occur.

Así que pensé que tal vez podría agregar algo para simular un gesto de atracción para activar la visualización de RefreshControl.

 [yourScrollView(or tableView) setContentOffset:CGPointMake(0.0f, -60.0f) animated:YES]; [yourRefreshControl beginRefreshing]; 

¡Funciona!

PD. UIRefreshControl también funciona con UIScrollView. [yourScrollView addSubview:yourRefreshControl] simplemente funciona.

Moviría su llamada [self pullToRefresh] para ver WillAppear en lugar de viewDidLoad.

Hay dos cosas que se pueden hacer para agregar UIRefreshControl en su vista de tabla, ninguna de ellas se agrega en su código

 1. [self setRefreshControl:tableRefreshControl]; 2. [self.m_TableView addSubview:tableRefreshControl]; 

Agregue 1 o 2 si su class es la subclass de UIViewController

Si su class es la subclass de UITableViewController, intente replace

 self.refreshControl = refreshControl; with 2 line 

antes del codigo:

[refreshControl beginRefresh]

inserta el código:

[refreshControl layoutIfNeeded]