13 votes

iScroll avec défilement natif sur un axe

J'utilise le plus merveilleux outil javascript iScroll4. http://cubiq.org/iscroll-4 sur un site web mobile pour iOS et Android. Voici à quoi ressemble ma mise en page :

layout problem

La zone de défilement horizontal fait appel à iScroll4 avec les paramètres suivants :

   var myScroll = new iScroll('frame',  { hScrollbar: false, vScrollbar: false, vScroll: false })

La partie défilement horizontal fonctionne très bien. Ce problème se produit lorsqu'un utilisateur tente de faire défiler la page vers le haut ou vers le bas en plaçant son doigt sur la zone de défilement horizontal. J'ai donc besoin d'un défilement vertical natif et d'un défilement horizontal iScroll sur la même zone.

Ce que j'ai essayé jusqu'à présent : Supprimer e.preventDefault() dans le code iScroll (permet le défilement natif, mais sur les DEUX axes). Supprimer e.preventDefault() et désactiver le défilement horizontal sur toute la page avec ceci :

var touchMove;

document.ontouchstart = function(e){
    touchMove = e.touches[0];
}

document.ontouchmove = function(e){
    var theTouch = e.touches[0] || e.changedTouches[0];
    var Xer      = rs(touchMove.pageX - theTouch.pageX).toPos();
    var Yer      = rs(touchMove.pageY - theTouch.pageY).toPos();        
    touchMove    = theTouch;
    if(Yer > Xer){ e.preventDefault(); }
}

qui semble ne rien faire. Comment puis-je permettre un défilement vertical natif dans la zone de défilement horizontal, sans perdre le défilement horizontal d'iScroll ? Je suis vraiment dans le pétrin. Merci d'avance.

(pour mémoire, rs(foo).toPos() est une fonction qui fait de foo un nombre positif quelle que soit sa valeur).

0voto

Design by Adrian Points 689

IScroll 5 supporte le défilement natif de n'importe quel axe !

http://iscrolljs.com/

0voto

musdy Points 441

Sur iScroll5 il suffit de mettre eventPassthrougt à true. Cela résout le problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X