iOS Pull для обновления не работает на определенных устройствах, таких как iPhone X
Я использую pull для обновления обычного обновления данных в виде таблицы.
Вот мой код
-(void)addUIRefreshControl{
//Instantiate and Configure Refresh Control
self.refreshControl = [[UIRefreshControl alloc] init]; // initialize refresh control
self.refreshControl.tintColor = [UIColor appBaseColor]; // set tint color
[self.refreshControl addTarget:self
action:@selector(refreshAPI)
forControlEvents:UIControlEventValueChanged]; // add target
[self.tableView addSubview:self.refreshControl]; // add the refresh control
}
-(void)refreshAPI{
if ([APP_DELEGATE isNetAvailable]) {
[self fetchAPI];
}else{
if (self.refreshControl) {
[self.refreshControl endRefreshing]; //end refreshing
}
}
}
На iOS Devices & Simulator все отлично работает, кроме iPhone X. Кто-нибудь может подсказать, что я делаю не так?
Спасибо
1 ответ
Ваше приложение iOS 10 и новее только? Если это так, вы должны использовать закомментированную строку:
- (void)addUIRefreshControl{
UIRefreshControl * refreshControl = [[UIRefreshControl alloc] init]; // initialize refresh control
refreshControl.tintColor = [UIColor appBaseColor]; // set tint color
refreshControl addTarget:self
action:@selector(refreshAPI)
forControlEvents:UIControlEventValueChanged]; // add target
if (self.tableView != NULL) {
// tableView will have a strong reference (and retain) refreshControl ; no need to have it be its own property
self.tableView.refreshControl = refreshControl
} else {
NSLog(@"suprise! self.tableView is null");
}
}
И вы всегда должны вызывать endRefreshing, когда значение изменяется (или обновляется). Раньше вы звонили, только если isNetAvailable
был ложным
-(void)refreshAPI{
if ([APP_DELEGATE isNetAvailable]) {
[self fetchAPI];
}
[self.tableView.refreshControl endRefreshing]; //end refreshing
}