Scroll d'une vue en déplaçant un objet de la vue
Rocou
Membre
Bonjour,
Je voudrais faire scroller le contenu d'une vue quand l'utilisateur déplace un objet de la vue et ceci uniquement lorsque le pointeur de la souris arrive en bordure de vue.
Mon code fonctionne très bien mais il souffre d'un défaut: j'ai tout bâti dans la méthode mouseDragged, aussi quand l'utilisateur arrête de faire son "drag", le scroll s'arrête.
Or je voudrais que le drag continue tant que le pointeur de la souris est en dehors de la vue ET tant que l'utilisateur maintient appuyé le bouton gauche de la souris
Je voudrais faire scroller le contenu d'une vue quand l'utilisateur déplace un objet de la vue et ceci uniquement lorsque le pointeur de la souris arrive en bordure de vue.
Mon code fonctionne très bien mais il souffre d'un défaut: j'ai tout bâti dans la méthode mouseDragged, aussi quand l'utilisateur arrête de faire son "drag", le scroll s'arrête.
Or je voudrais que le drag continue tant que le pointeur de la souris est en dehors de la vue ET tant que l'utilisateur maintient appuyé le bouton gauche de la souris
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Non non, ça c'est ce que j'ai fait mais dès que l'utilisateur stoppe son mouvement avec la souris (et cela arrive forcément quand le pointeur atteint le bord de l'écran...), le scroll s'arrête
En effet, la scrollview ne défile que lorsqu'on déplace la souris, et que le pointeur se trouve en dehors du cadre de la scrollview.
Ce que tu veux, c'est qu'elle se mette à défiler dès que le pointeur se trouve dans le bord de la scrollview.
Je ne l'ai jamais fait, mais je suppose que dans mouseDragged: tu peux détecter si le pointeur se trouve sur un bord, et appeler -scrollPoint: pour faire défiler la vue. La conversion des coordonnées frame <-> bounds s'annonce complexe.
Oui, c'est exactement cela. Merci beaucoup pour cette piste.
Je pensais que l'on pouvait détecter si le bouton de la souris était en position appuyé ou non mais je n'ai pas trouvé.
- dans mouseDragged: voir si tu es sur un bord
- si oui, lancer un timer (avec une période de 250 ms) qui fait défiler la vue
- dans mouseDragged: arrêter le timer si on n'est plus sur le bord.
- Dans mouseUp: arrêter le timer.
Honnêtement, tu as déjà tellement de boulot avec le reste de ton appli, que je me contenterais du fonctionnement par défaut de -[autoscroll].
Tu as bien raison. Néanmoins, par expérience, je sais que l'interface dans ce genre de logiciel est primordiale, les commandes étant prises par téléphone, il faut que l'interface soit très claire, intuitive, simple et que la "saisie" soit très rapide.
Mais tu as certainement raison, je me perds dans des détails qui pourront être intégrés plus tard après la version 1.0