9

Ich habe eine SammlungView. Ich möchte die Bildlaufrichtung erkennen. Ich habe einen zwei verschiedenen Animationsstil für Scroll-Down und Scroll-Up. Also muss ich Scrollrichtung lernen.ios UICollectionView erkennen scroll direction

Dies ist nur Arbeit am Finger berührt. Nicht für mich arbeiten

Antwort

26

Versuchen Sie folgendes:

diese irgendwo hinzufügen in Sie Header:

@property (nonatomic) CGFloat lastContentOffset; 

dann die scrollViewDidScroll: Methode überschreiben:

#pragma mark - UIScrollViewDelegate 

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if (self.lastContentOffset > scrollView.contentOffset.y) 
    { 
     NSLog(@"Scrolling Up"); 
    } 
    else if (self.lastContentOffset < scrollView.contentOffset.y) 
    { 
     NSLog(@"Scrolling Down"); 
    } 

    self.lastContentOffset = scrollView.contentOffset.y; 
} 

Gefunden in Finding the direction of scrolling in a UIScrollView?

+0

Sie hilft Dies ist Werke danken –

2

I versuchte einen Weg zu finden, herauszufinden, ob der Benutzer ist meist versucht, scrollView vertikal oder horizontal zu ziehen. Ich gebe Ihnen meine Lösung, ich hoffe, es jedem nützlich sein kann:

CGPoint _lastContentOffset; 

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { 
    _lastContentOffset = scrollView.contentOffset; 
} 

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 

    if (ABS(_lastContentOffset.x - scrollView.contentOffset.x) < ABS(_lastContentOffset.y - scrollView.contentOffset.y)) { 
     NSLog(@"Scrolled Vertically"); 
    } else { 
     NSLog(@"Scrolled Horizontally"); 
    } 

} 

Diese Arbeit für mich finden, und ich benutze diese die Scrollview zu vermeiden horizontal zu bewegen, wenn sie vertikal und gegenüber Scrollen.

4

dies ist der beste Weg, Scroll-Richtung zu bekommen, hoffen, dass diese Sie

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

    CGPoint targetPoint = *targetContentOffset; 
    CGPoint currentPoint = scrollView.contentOffset; 

    if (targetPoint.y > currentPoint.y) { 
     NSLog(@"up"); 
    } 
    else { 
     NSLog(@"down"); 
    } 
}