Le défilement Horizontal UIScrollView avec panoramique vertical geste
Je tente de mettre en œuvre un UIScrollView où panoramique horizontale permet de faire défiler les photos dans la scrollview mais verticalement panoramique effectue une autre action que j'ai. Droit maintenant, j'ai un UIScrollView qui est paginé avec le défilement vertical personnes handicapées, qui fonctionne très bien pour faire défiler des photos, mais je suis allez fou en essayant de trouver un moyen d'intercepter verticale de casseroles et d'appeler mon propre méthode au lieu de la verticale casseroles juste d'être mangé par le scrollview. J'ai été capable de faire
UIPanGestureRecognizer *panUp = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanGesture:)];
[self.scrollView addGestureRecognizer:panUp];
[scrollView.panGestureRecognizer setEnabled:NO];
Qui me donne un contrôle total sur la balance dans mon handlePanGesture: la méthode, mais ce n'est pas particulièrement utile parce que je me sens comme je suis essentiellement va être réécriture de la vitesse de défilement de la logique que je tente d'éviter. Toute aide ou des conseils sur la façon d'atteindre ce serait grandement apprécié.
Merci!
Il ne comporte pas de défilement. J'ai une sous-vue que je veux animer dans le même parent vue de la scrollview (la scrollview ne prend qu'une partie de son parent de la vue)
Alors je ne comprends pas votre phrase: "je me sens comme je suis essentiellement va être réécriture de la vitesse de défilement de la logique". Ne vous panoramique horizontal travail correctement? Est le panUp encore être intercepté par la scrollView?
Je sais je suis en retard mais le réglage du
shouldRecognizeSimultaneouslyWithGestureRecognizer
à return YES
va travailler pour cela, mais vous DEVEZ également définir votre pan geste .delegate
à self
. J'en ai laissé le réglage de la délégué et ça ne marchait pas pour moi. Je vois que vous avez négligé le délégué dans votre code ci-dessus. Espérons que cela aide les futurs utilisateurs.OriginalL'auteur lramirez135 | 2012-10-02
Vous devez vous connecter pour publier un commentaire.
Je pense que ce sera difficile, si vous souhaitez utiliser un pan geste à cause du défilement en vue de l'utilisation de ces gestes. Toutefois, si vous pouvez utiliser un glissement de doigt, il est facile à mettre en œuvre.
J'ai testé, et il a bien fonctionné à l'appel du gestionnaire, et vous n'avez pas besoin de désactiver le défilement de la vue panoramique geste de reconnaissance (dans mon test, le défilement de la vue était assez grand et le contenu assez court qu'il n'y a pas de défilement vertical -- je ne sais pas si c'est nécessaire ou pas).
Inutile. Avez-vous essayé geste de balayage par vous-même? Il n'est pas assez personnalisable à travailler avec elle.
OriginalL'auteur rdelmar
Comme de l'iOS 5,
UIScrollView
expose sesUIPanGestureRecognizer
. Ensemble personnalisé de votre balayez dudelegate
àself
et de faire de la gestureRecognizer une propriété ou d'ivar, et faire de votre classe sont conformes à la<UIGestureRecognizerDelegate>
protocole. Ensuite, mettre en œuvreUIGestureRecognizerDelegate
’s– gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:
comme suit:Ne fonctionne pas!
otherGestureRecognizer
estUIScrollViewDelayedTouchesBeganGestureRecognizer
et bien sûr, n'est pas égale àself.scrollView.panGestureRecognizer
Cette méthode sera appelée pour chaque geste de reconnaissance qui ont besoin de reconnaître simultanément avec un geste de reconnaissance pour qui l'objet est le délégué.
OriginalL'auteur Zev Eisenberg
J'ai ajouté un
UIPanGestureRecognizer
puis l'installation degestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:
comme ceci:J'ai aussi ajouté un chèque en
gestureRecognizerShouldBegin:
à utiliser uniquement
self.panGesture
lors d'un panoramique vers le haut ou vers le bas.Mise à jour
https://stackoverflow.com/a/8603839/667834 semble avoir une meilleure méthode pour
gestureRecognizerShouldBegin
A travaillé pour moi, sauf que moi j'ai besoin de fabs(la traduction.y) < fabs(la traduction.x)
Ce doit être marqué comme réponse
OriginalL'auteur richy