La pagination UIScrollView activée avec l'insert de contenu fonctionne de manière étrange
J'ai créé le UIScrollView avec le contenu des encarts.
scrollView.frame = CGRectMake(-80, 180, 480, 190)
self.scrollView.contentInset = UIEdgeInsetsMake(0, 160, 0, 160);
self.scrollView.pagingEnabled = YES;
[self.scrollView setContentSize:CGSizeMake(480, 190)];
//Add three Views
[self.scrollView addSubview:view1];
[self.scrollView addSubview:view2];
[self.scrollView addSubview:view3];
[view1 setFrame:CGRectMake(0, 0, 160, 190)];
[view2 setFrame:CGRectMake(160, 0, 160, 190)];
[view3 setFrame:CGRectMake(320, 0, 160, 190)];
La première fois, scrollView.contentOffset.x
était -160.0
Mais le problème bizarre, c'est quand je tape sur le scrollView(Zone Jaune), le décalage du contenu x la valeur est réinitialisée à 0 et le montre comme cela.
J'ai essayé plusieurs fois, mais en tapant sur de Défilement de la Vue réinitialise le contenu à l'offset 0.
Comment puis-je éviter cela?
source d'informationauteur Egor T
Vous devez vous connecter pour publier un commentaire.
UIScrollView
la pagination fonctionne en faisant défiler les pages avec la même largeur de la scrollView (dans votre cas, les pages de 480 largeur). Cela signifie que vous avez 1 seule page (si vous souhaitez toujours être en mesure de faire défiler à gauche et à droite en raison de l'160 contenu de l'encart).Une façon de faire ce travail serait:
Cela attirera et de faire défiler correctement, cependant, les côtés de l'écran ne sera pas interactif (80 pixels de chaque côté, depuis le contrôle démarre au niveau de l'image.de l'origine.x=80 et se termine à 80+160=240).
Deuxième option serait de gérer la pagination de vous-même, en utilisant des méthodes fournies par
UIScrollViewDelegate
.En outre à alex première approche avec la mise en clipsToBounds PAS, j'ai besoin de réagir à la faire défiler à l'extérieur de la spirale vue de limites. J'ai donc créé ScrollForwarderView classe qui est sous-classe de UIView.
ScrollForwarderView.h
ScrollForwarderView.m
Puis placez UIView avec classe personnalisée ScrollForwarderView au-dessus du défilement de l'affichage, lien scrollView propriété à mon défiler la vue et bien transmis les événements de l'utilisateur pour le scrollview.