2014-05-13 7 views
7

Ein Benutzer führt eine schnelle Wischgeste aus, um ein UICollectionView zum Scrollen zu bringen (es wird allmählich zum Stillstand kommen).UICollectionView zum Stoppen des Bildlaufs zwingen

Wie kann ich das Scrollen programmgesteuert erzwingen, um sofort zu stoppen? Um zu verdeutlichen, möchte ich die Verzögerung zulassen, aber ich muss es in Code stoppen können.

Antwort

20

Haben Sie Folgendes versucht?

[self.collectionView setContentOffset:self.collectionView.contentOffset animated:NO]; 

die contentOffset Eigenschaft wird als die Collectionrollen (auch über Animation) so zum Zeitpunkt des Aufrufs des oben, sollte es hoffentlich zwingen, die Collection zu stoppen seine bestehende Animation ständig aktualisiert.

+2

Funktioniert nicht, entweder der Y- oder der X-Wert muss geändert werden. Ich benutzte dies und es funktioniert: 'CGPoint offset = self.collectionView.contentOffset; (self.collectionView.contentOffset.y> 0)? offset.y--: offset.y ++; [self.collectionView setContentOffset: offset animiert: NO]; ' –

1

Übernehmen Sie die folgende Methode scrollViewDelegate, um abzuholen, wenn der Benutzer loslässt, die CollectionView zu ziehen.

-(void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset; 

Sie können dann erstellen Sie einfach Ihre eigene Animation Block zu setzen je nachdem, welche Geschwindigkeit/Endziel Sie denken, sieht am besten mit der contentOffset Eigenschaft.

+0

Dieser Wille passt nicht zu meinem Szenario. Ich muss die Animation jederzeit unterbrechen können. –

+1

Haha okay, dann einfach die contentOffset-Eigenschaft jederzeit einstellen. Es wird es zwingen aufzuhören. –

+0

'self.collectionView.ContentOffset = CGPointZero;' setzt den Inhaltsversatz an den Anfang, bricht die Animation jedoch nicht ab. Es geht einfach weiter von 0,0. –

25

Versuchen Sie diese. Arbeitete für mich. :)

self.collectionView.scrollEnabled = NO; 
+0

Sie können immer noch auf Elemente tippen, um zu ihnen zu blättern: / –

0

wenn Sie die "pagingEnabled" und "scrollEnabled" Eigenschaften auf "true" als dies funktionieren sollte:

self.collectionView.scrollEnabled = false 
    self.collectionView.pagingEnabled = false 
2

Für Swift 3:

collectionView.isScrollEnabled = false 
Verwandte Themen