J'ai une vue comme l'iphone springboard. J'ai créé à l'aide d'un UIScrollView et UIButtons. Je veux désactiver scroling horizontal sur ce point de vue. Je ne veux que le défilement vertical. Comment dois-je faire?
Réponses
Trop de publicités?Vous devez définir le contentSize propriété de la UIScrollView. Par exemple, si votre UIScrollView est de 320 pixels de large (la largeur de l'écran), puis vous pouvez faire ceci:
CGSize scrollableSize = CGSizeMake(320, myScrollableHeight);
[myScrollView setContentSize:scrollableSize];
Le UIScrollView n'aura alors qu'à faire défiler l'écran verticalement, car il peut déjà afficher tout ce que l'horizontale.
Vous pouvez arrêter le défilement horizontal ou à la verticale de défilement dans l' ScrollViewDelegate
Méthode.
Ici, c'est comment,
Arrête Le Défilement Horizontal:
Si vous voulez faire défiler horizontalement, alors vous avez besoin pour augmenter la contentOffset.x. Empêcher que les arrêts de la scrollview de défilement dans le sens horizontal.
- (void)scrollViewDidScroll:(UIScrollView *)sender {
if (sender.contentOffset.x != 0) {
CGPoint offset = sender.contentOffset;
offset.x = 0;
sender.contentOffset = offset;
}
Arrête Le Défilement Vertical:
Si vous souhaitez faire défiler verticalement, alors vous avez besoin pour augmenter la contentOffset.y. Empêcher que les arrêts de la scrollview de défilement dans la direction verticale.
- (void)scrollViewDidScroll:(UIScrollView *)sender {
if (sender.contentOffset.y != 0) {
CGPoint offset = sender.contentOffset;
offset.y = 0;
sender.contentOffset = offset;
}
Le code ci-dessus empêche les changements en x
et y
d'un scrollview contentOffset
et il conduit à arrêter le défilement en scrollViewDidScroll:
méthode.
depuis iOS7 utilisation
self.automaticallyAdjustsScrollViewInsets = NO;
//et de créer votre page de scroller avec 3 pages
self.pageView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
[self.pageView setContentSize:CGSizeMake(self.view.frame.size.width*3, self.view.frame.size.height)];
[self.pageView setShowsVerticalScrollIndicator:NO];
[self.pageView setPagingEnabled:YES];
[self.view addSubview:self.pageView];
Une alternative pour la taille du contenu solution serait de bloquer le délégué
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGPoint offset = scrollView.contentOffset;
if (offset.x != 0) {
[scrollView setContentOffset:CGPointMake(0, offset.y)];
}
}
Qui va encore permettre le défilement vertical