Hier Code meine Überschreibung - es berechnet nur, wo zu schnappen:UIScrollView nicht immer Verzögerung animieren, wenn scrollViewWillEndDragging
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
if(targetContentOffset->y < 400) {
targetContentOffset->y = 0;
return;
}
int baseCheck = 400;
while(baseCheck <= 10000) {
if(targetContentOffset->y > baseCheck && targetContentOffset->y < baseCheck + 800) {
targetContentOffset->y = (baseCheck + 340);
return;
}
baseCheck += 800;
}
targetContentOffset->y = 0;
}
Wenn ich meinen Finger halten für mehr nach unten als eine Sekunde oder zwei, um die Scrollview ziehen und heben Sie dann meinen Finger, es belebt normalerweise in Platz. Allerdings, wenn ich einen schnellen "Flick" mache, animiert es selten - es fängt nur an targetContentOffset. Ich versuche das Standard-Paging-Verhalten zu emulieren (außer das Versuch, benutzerdefinierte Positionen einzufangen).
Irgendwelche Ideen?
Ich habe versucht, diese mit einem horizontalen UICollectionView, und während es die resultierende Animation war nervös gearbeitet; Ich denke, es gab zwei Animationen gleichzeitig. Wrapping 'setContentOffset:' in 'dispatch_async' repariert es. – JLundell
Hast du es jemals "perfekt" gemacht? – Lukasz