Comment obtenir la direction verticale UIScrollView dans Swift?
Comment puis-je obtenir le défilement/sens de balayage de haut en bas, en une CR?
Je veux ajouter un UIScrollView ou quelque chose d'autre dans mon CR qui permet de voir si l'utilisateur effectue/défiler vers le haut ou vers le bas, puis masquer/afficher une UIView
en fonction de si c'était un up/down geste.
source d'informationauteur user2722667 | 2015-08-06
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez un
UIScrollView
alors vous pouvez prendre avantage de lascrollViewDidScroll:
fonction. Vous avez besoin d'enregistrer la dernière position (lecontentOffset
) il ont et la mise à jour comme dans la manière suivante:Il y a d'autres façons de faire, bien sûr, c'est l'un d'eux.
J'espère que cela vous aidera.
Victor réponse est grand, mais c'est très cher, que vous êtes toujours en les comparant et en les stockant les valeurs. Si votre but est d'identifier le sens de défilement instantanément, sans calcul fastidieux, alors essayez cette l'utilisation de Swift:
Et là vous allez. Encore une fois, si vous avez besoin de suivre constamment, l'utilisation des Vainqueurs de réponse, sinon, je préfère cette solution.
J'ai utilisé de Victor réponse avec une légère amélioration lors de défilement au-delà de la fin ou au début de les faire défiler, puis de l'rebondir effet. J'ai ajouté la contrainte par le calcul (le scrollView.contentSize.hauteur - scrollView.cadre.hauteur), puis la limitation de la scrollView.contentOffset.y être supérieure à 0 ou moins (scrollView.contentSize.hauteur - scrollView.cadre.hauteur), sans aucune modification n'est effectuée lors de rebondir.
Swift 2-4 avec UISwipeGestureRecognizer
Une autre option est l'utilisation de l'utilisation de la
UISwipeGestureRecognizer
qui permettra de reconnaître le mouvement de balayage à la demande de la direction (Qui fonctionne sur tous les points de vue et pas seulement surUIScrollView
Pour Swift je pense que le plus simple et le plus puissant, c'est de faire comme ci-dessous.
Il vous permet de suivre lorsque la direction a changé et de réagir qu'une fois quand il a changé.
De Plus, vous pouvez toujours accéder à la
.lastDirection
défilé de la propriété si vous avez besoin de consulter qui dans votre code à tout moment.Ci-dessus suppose que vous êtes seulement suivi vers le haut/vers le bas défilement.
Il est personnalisable via le protocole enum. Vous pouvez ajouter/modifier
.left
et.right
de suivre n'importe quelle direction.J'espère que cela aide quelqu'un.
Acclamations
vous pourriez faire quelque chose comme ceci:
et avec scrollViewDelegate:
J'ai trouvé que c'est la plus simple et la plus flexible de l'option (il travaille pour UICollectionView et UITableView).
Où cela ne fonctionne pas bien, c'est que si il y a 0 vitesse - dans ce cas, vous n'aurez aucun choix mais pour utiliser la accepté de répondre stockées propriété solution.
J'ai fait le protocole à la réutilisation de Défilement des Directions.
Déclarer ces
enum
etprotocol
s.Utilisation De
ViewController
Si vous souhaitez utiliser une orientation particulière, juste la mise à jour spécifique
contentOffset
que vous voulez.Pour swift4