C'è un modo per disattivare la decelerazione di un UIScrollView?Disattivare UIScrollView in decelerazione
Desidero consentire all'utente di scorrere la tela, ma non voglio che la tela continui a scorrere dopo che l'utente ha sollevato il dito.
C'è un modo per disattivare la decelerazione di un UIScrollView?Disattivare UIScrollView in decelerazione
Desidero consentire all'utente di scorrere la tela, ma non voglio che la tela continui a scorrere dopo che l'utente ha sollevato il dito.
Questo può essere fatto utilizzando il metodo delegato UIScrollView
scrollViewWillBeginDecelerating
per impostare automaticamente l'offset del contenuto sulla posizione corrente dello schermo.
da implementare:
UIScrollView
oggetto se non l'avete già fatto.Nel file di implementazione .m
del delegato, aggiungere le seguenti righe di codice:
-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{
[scrollView setContentOffset:scrollView.contentOffset animated:YES];
}
Voila! Non più scorrimento automatico.
Bello. Non ho idea del perché, ma funziona. Grazie! –
Il mio salta a dove la decelerazione sarebbe finita di nuovo dove era iniziato ... Qualche suggerimento? – jjxtra
Sta funzionando bene .. –
È possibile alzare la velocità di decelerazione molto alta. Con una velocità infinita, si fermerebbe immediatamente. Prova a impostare il tasso di queste costanti:
scrollView.decelerationRate = UIScrollViewDecelerationRateNormal;
e
scrollView.decelerationRate = UIScrollViewDecelerationRateFast;
Se veloce ancora non è abbastanza veloce per voi, è solo UIScrollViewDecelerationRateFast typedef'ed come un galleggiante, così puoi semplicemente moltiplicarlo di un fattore di circa 10 per accelerarlo ancora di più.
Grazie per la risposta! Ho provato vari valori per la proprietà decelerationRate, ma non sono riuscito a far apparire la decelerazione non esistente. Un rapido scorrimento fa sempre scorrere la scrollview di una quantità considerevole. –
In base alla mia esperienza, la proprietà 'decelerationRate' risponde solo ai valori esplicati nella documentazione:' UIScrollViewDecelerationRateNormal' e 'UIScrollViewDecelerationRateFast'. –
Questo è quello che stavo cercando. Grazie :) – codeburn
Per iOS 5.0 o versioni successive, esiste un metodo migliore rispetto alla chiamata setContentOffset:animated:
.
Implementare metodo delegato scrollViewWillEndDragging:withVelocity:targetContentOffset:
nel file .m
:
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView
withVelocity:(CGPoint)velocity
targetContentOffset:(inout CGPoint *)targetContentOffset {
*targetContentOffset = scrollView.contentOffset;
}
Assegnazione l'offset targetContentOffset
corrente si ferma la UIScrollView
da scorrimento automatico.
Perché dovresti farlo? –
Adam, Sono consapevole che la modifica del comportamento predefinito non è raccomandabile, ma penso che nel mio caso speciale avrebbe senso. Sto implementando una tela estesa con la possibilità di modificare gli oggetti direttamente sulla tela. Quando si accede a questa modalità di modifica su tela, desidero limitare la distanza di scorrimento dell'utente in modo che l'oggetto si trovi sempre nell'intervallo visibile. L'uso è permesso di scorrere ulteriormente, ma rimbalzerebbe sul dito verso l'alto. Sono a conoscenza della proprietà contentSize, ma interferisce con la mia tela in crescita. –
Nella mia situazione, stavamo facendo pagare per il lavoro di noleggio e il cliente ha chiesto di rimuovere la mozione di decelerazione. – Mark