Un UIScrollView
avec la pagination est activée, s'arrêter à des multiples de sa largeur (ou la hauteur). Donc, la première étape est de comprendre comment la largeur que vous voulez que vos pages. Faire que la largeur de l' UIScrollView
. Ensuite, définissez votre sous-vue de la taille mais grand vous en avez besoin pour être, et l'ensemble de leurs centres basée sur des multiples de l' UIScrollView
s'de largeur.
Alors, puisque vous voulez voir les autres pages, bien sûr, clipsToBounds
de NO
comme mhjoy déclaré. Le truc maintenant la partie est de la faire défiler lorsque l'utilisateur démarre le glisser en dehors de la plage de l' UIScrollView
'image. Ma solution (quand j'ai eu à faire cette très récemment) ont été comme suit:
Créer un UIView
sous-classe (c - ClipView
) qui contiendra l' UIScrollView
et il est sous-vues. Essentiellement, il devrait avoir l'image de ce que l'on pourrait supposer l' UIScrollView
auraient dans des conditions normales. Place de l' UIScrollView
dans le centre de l' ClipView
. Assurez-vous que l' ClipView
s' clipsToBounds
est définie à l' YES
si sa largeur est inférieure à celle de son parent vue. Aussi, l' ClipView
a besoin d'une référence à l' UIScrollView
.
La dernière étape consiste à substituer - (UIView *)hitTest:withEvent:
à l'intérieur de l' ClipView
.
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
return [self pointInside:point withEvent:event] ? scrollView : nil;
}
En fait cela élargit la zone tactile de la UIScrollView
à l'image de sa mère, exactement ce dont vous avez besoin.
Une autre option serait de la sous-classe UIScrollView
et de remplacer son - (BOOL)pointInside:(CGPoint) point withEvent:(UIEvent *) event
méthode, cependant, vous aurez toujours besoin d'un conteneur en vue de faire la coupure, et il peut être difficile de déterminer le moment du retour YES
basé uniquement sur l' UIScrollView
'image.
REMARQUE: Vous devez également prendre un coup d'oeil à la Juri Pakaste de hitTest:withEvent: modification si vous rencontrez des problèmes avec la sous-vue de l'utilisateur.