2013-01-08 1 views
6

Quando si utilizza selectRowAtIndexPath:animated:scrollPosition:, sto passando UITableViewScrollPositionNone. Nonostante il nome, mi aspetto che la vista tabella scorra quando necessario, in modo che la riga sia visibile (e non scorra se è già visibile).UITableViewScrollPositionNone non scorre la visualizzazione tabella

UITableViewScrollPositionNone - vista tabella scorre la fila di interesse sia pienamente visibile con un minimo di movimento. Se la riga è già completamente visibile, non si verifica alcuno scorrimento. Ad esempio, se la riga si trova sopra l'area visibile, il comportamento è identico a quello specificato da UITableViewScrollPositionTop. Questo è l'impostazione predefinita.

Tuttavia, sto trovando che la vista tabella non scorre affatto. Se utilizzo UITableViewScrollPositionTop o UITableViewScrollPositionBottom, la vista tabella scorre come previsto.

Può essere possibile che la documentazione per questo non sia corretta? O mi sta sfuggendo qualcosa?

+0

La documentazione è sicuramente corretta. Stai istanziando un'animazione scrollTo? – jakenberg

+0

Sto solo chiamando [self.tableView scrollToRowAtIndexPath: myPath atScrollPosition: UITableViewScrollPositionNone animato: YES] in tutti e tre gli esempi. –

+0

Hai confermato che i tuoi limiti sono stati impostati correttamente? – jakenberg

risposta

0

È necessario assicurarsi che la vista del contenuto della vista tabella abbia lo spazio per scorrere. Una volta ho bisogno di scorrere la vista tabella perché l'utente tocca un campo di testo e la tastiera si avvicina, ho bisogno di estendere il contenuto della vista tabella all'altezza dell'altezza della tastiera in modo che la vista tabella possa scorrere. Come questo:

UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, keyboardFrame.size.height, 0.0); 
self.tableView.contentInset = contentInsets; 
self.tableView.scrollIndicatorInsets = contentInsets; 
[self.tableView scrollToRowAtIndexPath:self.currentEditingCellIndexPath atScrollPosition:UITableViewScrollPositionNone animated:YES]; 
4

La documentazione per selectRowAtIndexPath di UITableView: animato: scrollPosition: ha una sezione che descrive quello che stai vivendo.

Problemi Passando UITableViewScrollPositionNone sarà risultato in alcun scorrimento, anziché lo scorrimento minimo descritte quella continua. Per scorrere fino alla riga appena selezionata con minimo scorrimento, selezionare la fila utilizzando questo metodo con UITableViewScrollPositionNone, quindi chiamare scrollToRowAtIndexPath: atScrollPosition: animato: con UITableViewScrollPositionNone.

Spero che questo aiuti!