2010-09-26 11 views
1

J'ai un UIScrollView dans une vue UIViewController qui défile horizontalement. Comment puis-je détecter si le parchemin est à l'extrémité gauche ou droite ou quelque part au milieu?Détection de défilement UIScrollView

Répondre

1

GameBit est correct, mais d'élaborer -

Le UIScrollView a un membre contentOffset variable décrivant la quantité de pixels de l'origine du scrollview a fait défiler. Une valeur positive est un défilement vers la droite, négatif est un défilement vers la gauche.

Votre UIScrollView est-il en mode paginé? si c'est le cas, cela vous aidera:

CGFloat pageWidth = scrollView.frame.size.width; 
    int page = floor((scrollView.contentOffset.x - pageWidth/2)/pageWidth) + 1; 
2

Vous devrez probablement regarder dans une méthode scrollViewDelegate comme ci-dessous.

ObjC

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{ 
    NSLog(@"Point: %@", NSStringFromCGPoint(scrollView.contentOffset)); 
} 

Swift

override func scrollViewDidScroll(scrollView: UIScrollView) { 
    println(scrollView.contentOffset) 
} 

Jetez un oeil à la apple docs.

Assurez-vous également de définir votre délégué scrollview your_scroll_view.delegate = self; et votre contrôleur de vue doit être conforme à <UIScrollViewDelegate>

0

Cela fonctionne pour moi dans UIScrollView horizontal

  • Conformes à UIScrollViewDelegate
  • Dans votre ViewController - yourScrollView.delegate = self

    func scrollViewDidEndDecelerating(scrollView: UIScrollView) { 
    var currentPage = yourScrollView.contentOffset.x/yourScrollView.bounds.size.width; 
    } 
    

Ne pas utiliser scrollViewDidScroll que vous devez attendre le défilement se termine

Questions connexes