iOS Pull To Refresh Tidak Berfungsi pada Perangkat Tertentu seperti iPhone X

Saya menggunakan tarikan untuk menyegarkan untuk penyegaran data biasa pada tampilan tabel.

Ini kode saya

-(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
        }
    }
}

Semuanya berfungsi dengan baik di Perangkat & Simulator iOS kecuali untuk iPhone X. Adakah yang bisa menyarankan kesalahan apa yang saya lakukan?

Terima kasih


person Amit Majumdar    schedule 17.05.2018    source sumber
comment
pindahkan kontrol penyegaran ke superview di viewDidAppear   -  person Nilomi Shah    schedule 07.08.2019


Jawaban (1)


Apakah aplikasi Anda hanya untuk iOS 10 dan yang lebih baru? Jika demikian, Anda harus menggunakan baris komentar Anda:

- (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");
    }
}

Dan Anda harus selalu memanggil "endRefreshing" ketika nilainya berubah (atau diperbarui). Sebelumnya, Anda menelepon hanya jika isNetAvailable salah.

-(void)refreshAPI{

    if ([APP_DELEGATE isNetAvailable]) {
        [self fetchAPI];
    }

    [self.tableView.refreshControl endRefreshing]; //end refreshing
}
person Michael Dautermann    schedule 17.05.2018
comment
Hai Micheal, saya memanggil endRefreshing di dalam Panggilan Balik API saya. - person Amit Majumdar; 17.05.2018
comment
apakah panggilan balik API itu tidak termasuk dalam kode contoh yang Anda masukkan dalam pertanyaan awal Anda? - person Michael Dautermann; 17.05.2018
comment
Tidak, Michael, Itu ada di dalam metode FetchAPI. Dan saya juga mencoba kode Anda. Tapi masih tidak berfungsi untuk iPhone X. Ini berfungsi sempurna untuk perangkat lain. Sungguh aneh - person Amit Majumdar; 17.05.2018
comment
jika Anda menyetel breakpoint di Xcode, apakah refreshAPI dan fetchAPI dipanggil? Bisakah Anda menempatkan breakpoint di endRefreshing dan apakah itu berhasil di iPhoneX? - person Michael Dautermann; 17.05.2018
comment
Tidak, Michael, metode pemilih tidak dipanggil sama sekali. Saya terus menyeret layar ke tengah, tetapi tidak melakukan apa pun. - person Amit Majumdar; 17.05.2018
comment
Apakah kontrol penyegaran muncul? - person Michael Dautermann; 17.05.2018
comment
Ya, tampilannya normal, namun saat diseret, ia berputar ke sudut tertentu namun tidak memberikan umpan balik getaran atau memanggil metode pemilihnya. - person Amit Majumdar; 17.05.2018