2013-08-07 10 views
7

Quindi ho una sottoclasse standard di UITableViewController con visualizzazione tabella. Ora ho impostato il contenuto suIl contenuto della vista tabella salta giù quando si utilizza UIRefreshControl e si imposta contentInset

self.tableView.contentInset = UIEdgeInsetsMake(40, 0, 0, 0); 

Sto anche utilizzando UIRefreshControl in modo standard.

self.refreshControl = [[CTRefreshControl alloc] init]; 
[self.refreshControl addTarget:self action:@selector(loadData:) forControlEvents:UIControlEventValueChanged]; 

Tutto funziona bene e senza intoppi, se vista tabella contiene abbastanza dati che scorre (in modo contenuto altezza è più che all'altezza della vista tabella). Quando non ci sono abbastanza dati nella tabella (ad esempio solo 2 righe), quando inizio a tirare verso il basso procede senza intoppi e poi improvvisamente salta di circa 20 punti verso il basso. La stessa cosa accade quando faccio scorrere l'altra direzione. Non succede quando non c'è controllo di aggiornamento o quando non cambio contentInset. Qualche idea? Tutto su iOS 6.

+0

Inserire la modifica di contentInset in un blocco di animazione della durata di 0,2 secondi. – Fogmeister

+0

Perché stai modificando il contenuto della vista tabella? Potrebbe esserci un modo migliore per farlo senza modificare il contenuto. – Fogmeister

+4

Sì, anch'io ho avuto lo stesso problema. È chiaramente un bug in iOS. L'ho inviato ad Apple e lo hanno riconosciuto. – Accatyyc

risposta

1

Hai bisogno di mettere il cambio di contentInset in un blocco di animazione come questo ...

[UIView animateWithDuration:0.2 
         delay:0.0 
        options:UIViewAnimationOptionCurveEaseInOut 
       animations:^{ 
        self.tableView.contentInset = UIEdgeInsetsMake(40, 0, 0, 0); 
       } 
       completion:nil]; 

(digitato dalla memoria così si potrebbe essere necessario controllare il completamento del codice).

Questo dovrebbe risolvere il problema.

+0

Sto impostando contentInset in viewDidLoad poiché il contenuto dovrebbe sempre rimanere a 40 pips in meno (a meno che non scorri) quindi questo non ha alcun effetto. – Michal

+0

L'impostazione dell'inserto di contenuto in Interface Builder invece di viewDidLoad dovrebbe vedere il contenuto inserito inserito e UITableViewController incorporandolo nell'offset. –

Problemi correlati