Je tente d'implémenter une vue de défilement horizontale pour une application iPad. La vue de défilement montre une série d'images. Après le défilement, lorsque la vue défile s'arrête, je veux que les images soient alignées le long de points horizontaux spécifiques. Pour ce faire, j'ai essayé 2 approches:Arrêt d'un UIScrollView à une position spécifique
1) Désactiver le défilement pour UIScrollView et implémenter à la place un PanGestureRecogniser qui détecterait la translation et la vélocité du mouvement "glisser/glisser" et définirait le décalage de contenu de la vue déroulante en conséquence pour les points prédéterminés requis. Mais, le problème ici est que si l'utilisateur traîne lentement la vue de défilement, le mouvement de vue de défilement est très saccadé parce que les x récupérés coordonnés de la vue de défilement sautent d'avant en arrière autour du point où le doigt est pressé. Par exemple: les valeurs de x vont de 50 à 70 quand le doigt se déplace le long de 60-70. Comment puis-je rendre le mouvement de la vue de défilement lisse?
2) Activer le défilement pour UIScrollView et vérifier la fin de la décélération, puis régler le décalage de contenu de la vue déroulante pour l'ajuster à la position nécessaire. Mais le problème ici est que la vue de défilement ne s'ajuste à sa position finale qu'après avoir arrêté de décélérer et qu'il y a un retard visible et que cette animation ne semble pas bonne aussi. Y at-il un moyen que je peux détecter lorsque la vue défilement est sur le point d'arrêter de défiler et ensuite ajuster sa position au lieu d'attendre pour finir le défilement. D'après ce que j'ai lu sur certains forums, ce ne sera pas possible.
3) Une scrollview de pagination ne fonctionnera pas dans ce scénario car je ne veux pas que toute la largeur des images soit défilée.
Est-ce que quelqu'un a des idées sur la façon dont je peux mettre en œuvre la fonctionnalité ci-dessus.
vrai.Mais dans ce cas, la zone "scrollable/swipe-able" ne sera-t-elle pas limitée à une largeur de 200? Cela signifie que l'utilisateur ne pourra pas balayer la portion horizontale complète dans laquelle les images sont restituées et sera limité au défilement/balayage uniquement dans ces 200 unités. Je veux que l'utilisateur puisse faire défiler toute la largeur de la vue défilée. – Nathan
Vous pourriez contourner ce problème en sous-classant 'UIScrollView' et en surchargeant' hitTest: withEvent: 'pour retourner' YES' pour n'importe quoi dans la zone que vous voulez faire défiler (la largeur de la vue parent, dans ce cas). –
Ok, je devrais essayer ça. Mais, avec une vue de défilement de pagination vient un autre problème fondamental. Si l'utilisateur fait un "balayage rapide", alors une seule image (ou un ensemble fixe d'images) défilerait chaque fois à droite? Ce ne serait pas comme une vue de défilement libre où le nombre d'images défilant à chaque fois varierait selon la distance et la vitesse du balayage. Désolé si cela ressemble à im jouer le défenseur du diable ici, mais je suis juste en train d'essayer d'obtenir la fonctionnalité correcte. – Nathan