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 :
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).