Sto provando ad implementare una barra delle schede personalizzata che è scorrevole e ha il paging ad ogni elemento della barra delle schede. Per quello sto usando il delegato scrollViewWillEndDragging: withVelocity: targetContentOffset: che funziona perfettamente con un problema.scrollViewWillEndDragging: withVelocity: targetContentOffset: non funziona ai bordi di UISCrollView
Il modo in cui il mio paging funziona è, se il contentOffset si trova vicino al punto giusto, il targetContentOffset modifiche alla compensazione di tale elemento. Stessa cosa per il lato sinistro.
Il problema è che ogni volta che mi trovo a metà sinistra del primo elemento e a destra dell'ultimo (la vista di scorrimento funziona in orizzontale), è necessario passare a ContentOffset 0 e allo spostamento contenuto dell'elemento più a destra (meno quelli sullo schermo), ma non è così.
Ho controllato con il debugger e il targetContentOffset-> x è infatti 0 (nel primo caso - sinistra della voce più a sinistra). Quindi il problema è che UIScrollView non sta scorrendo lì. Mi sono perso.
Ecco il mio delegato implementato:
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView
withVelocity:(CGPoint)velocity
targetContentOffset:(inout CGPoint *)targetContentOffset{
NSInteger index = lrintf(targetContentOffset->x/self.tabWidth);
targetContentOffset->x = index * self.tabWidth;
}
Ecco lo schema che spiega quello che voglio fare.
|-------|-------|-------|-------|-------|-------|-------|
| | | | | | | |
| | | | | | | |
|_______|_______|_______|_______|_______|_______|_______|
|_______________________________________|
where it is and i scroll it to the left
<----|
|_______________________________________|
where it would stop
|_______________________________________|
where i want it to stop
Ho riscontrato anche questo problema. Qualche possibilità di pubblicare il numero ID bug di Apple - o meglio, un link alla voce OpenRadar - per aiutare me stesso, e possibilmente gli altri, a pubblicare un bug report duplicato? (È abbastanza noto che Apple dà la priorità alla risoluzione dei bug in base al numero di rapporti che ricevono). – Calrion
Sicuro. È un duplicato di 10255505 ma sembra che non esista in OpenRadar. Ad ogni modo sembra essere chiuso ora, ma non so se rilasceranno la correzione o meno. – dvieira