In iOS 6, ho avuto un UITableView
creato utilizzando QuickDialog
nella mia app. Scorreva normalmente. Quando sono passato a iOS 7, lo stesso UITableView
non scorre correttamente. Posso trascinare verso il basso (lo scroller si comprime) ma quando rilascio, si apre di nuovo verso l'alto. Ho giocato con viewDidAppear
per provare e diagnosticare il problema. Vedi il blocco di codice qui sotto.UITableView non esegue lo scorrimento dopo il passaggio a iOS 7
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
NSLog(@"Content height: %f",self.quickDialogTableView.contentSize.height);
[self.quickDialogTableView reloadData];
NSLog(@"Content height: %f",self.quickDialogTableView.contentSize.height);
[self.quickDialogTableView layoutIfNeeded];
NSLog(@"Content height: %f",self.quickDialogTableView.contentSize.height);
}
L'uscita di questo blocco in iOS 7 è
Content height: 0.000000
Content height: 836.000000
Content height: 0.000000
Nel frattempo, l'uscita di questo blocco in iOS 6 (simulatore) è
Content height: 836.000000
Content height: 836.000000
Content height: 836.000000
anche per cercare e diagnosticare la problema, ho impostato un pulsante che avrebbe attivato [self.quickDialogTableView reloadData]
. Ogni volta che il pulsante viene premuto, il comportamento di scorrimento inizia a funzionare normalmente. Quindi quando esco dalla vista e torno indietro, lo scorrimento fallisce nuovamente (fino a quando il pulsante non viene premuto). Per essere chiari, ho provato a inserire un valore in viewWillAppear
da solo (ovvero rimuovere le ultime due righe nel blocco di codice sopra) e non corregge lo scorrimento.
Sto cercando degli indizi su dove potrei cercare di correggere il problema. Grazie in anticipo per qualsiasi aiuto.
Questo non sembrava che avrebbe funzionato, e abbastanza sicuro, non ha funzionato per me. Sto affrontando lo stesso problema, tuttavia, nella tua soluzione stai semplicemente prendendo il contentSize da quickDialogTableView in viewDidAppear: e poi riassegnandolo nuovamente a contentSize di quickDialogTableView di nuovo in viewDidLayoutSubviews ... Non riesco a capire come sarebbe risolto il problema. – Jamornh
@Jamornh Concordato. Non ha alcun senso. Tuttavia, se registro 'self.quickDialogTableView.contentSize' in' -viewDidLayoutSubviews' prima di 'self.quickDialogTableView.contentSize = self.trueContentSize;' risulta essere zero. Quindi qualcosa sta accadendo tra '-viewDidAppear' e' viewDidLayoutSubviews' che sta impostando 'contentSize' su zero. Non ho idea di cosa. Siamo spiacenti di sentire che il mio trucco non ha funzionato per te. Hai controllato per assicurarti che la tua proprietà 'self.trueContentSize' personalizzata restituisse la dimensione prevista prima di usarla? –
Sono riuscito a risolvere il problema reimpostando manualmente i frame ei limiti della superview di tableView, quindi reimpostando il frame di tableView per adattarlo in modo che contentSize di tableView sia più grande della sua cornice. Apparentemente lo scorrimento non funzionava perché il frame di tableView è più grande di contentSize per qualche motivo. Grazie per la risposta! – Jamornh