IScroll – Préserver le défilement vertical natif – fonctionne dans iOS, pas Android

J'utilise iScroll.js pour faire défiler un carrousel d'articles sur une page mobile. J'ai trouvé le correctif suivant qui écoute le mouvement vertical et empêche le script iScroll de prendre le contrôle, en laissant passer le défilement vertical natif:

onBeforeScrollStart: function(e) { try { point = e.touches[0]; pointStartX = point.pageX; pointStartY = point.pageY; } catch(e) {} null; }, onBeforeScrollMove: function(e) { try { deltaX = Math.abs(point.pageX - pointStartX); deltaY = Math.abs(point.pageY - pointStartY); if (deltaX >= deltaY) { e.preventDefault(); } else { null; } } catch(e) {} } 

J'utilise try {} catch {} car il y avait des problèmes lors du test dans un navigateur (se plaignait que le point ne soit pas défini).

  • Protéger les achats dans l'application de Freedom Hack
  • Comment obtenir du contenu html à partir de XWalkView?
  • Quelles sont les demandes de réseau annulées sur Android Chrome
  • Exception: android.view.InflateException: ligne de fichier XML binaire n ° 2: erreur lors de la classe gonflable android.support.v7.widget.CardView
  • Copier / partager des configurations entre les versions payantes / gratuites d'une application Android?
  • Mise à jour de l'application système Android, avec / sans signature de plate-forme
  • Le problème que j'ai, c'est qu'il fonctionne bien sur iOS, testé sur plusieurs i-devices, mais sur Android, ce n'est pas si bon. Si un utilisateur tente de faire défiler la page verticalement, en commençant par placer le doigt sur le carrousel, la page ne défile pas lorsque iScroll a toujours le contrôle.

    Une idée de la façon dont je peux le faire fonctionner sur Android, ou des conseils sur l'endroit où cela pourrait se produire?

    Modifier:

    Certains débogues et j'ai découvert peut-être pourquoi cela ne fonctionne pas. Les coordonnées sont mises à jour alors que l'utilisateur touche l'écran sur iOS, mais sur Android, seul le premier ensemble de coordonnées est détecté. Une idée de pourquoi?

  • Appelez (et obtenez la réponse pour) un code USSD, en arrière-plan?
  • Android.util.AndroidRuntimeException: requestFeature () doit être appelé avant d'ajouter du contenu
  • Définir l'ordre Z des vues de RelativeLayout dans Android
  • Utilisation de Gradle avec un projet Android existant
  • Comment enregistrer le jeton d'accès Oauth en toute sécurité dans Android
  • Ouvrez les paramètres Android depuis l'application QT (com.android.settings)
  • 2 Solutions collect form web for “IScroll – Préserver le défilement vertical natif – fonctionne dans iOS, pas Android”

    Vous ne semblez pas avoir "point" dans votre champ d'application pour onBeforeScrollMove. En outre, certains périphériques Android peuvent invoquer des événements de clic sur multitouch (je ne peux pas le confirmer, mais seulement une théorisation en raison de la fragmentation de la plate-forme)

    J'ai un bon script que je lancerai prochainement qui prend des événements de clic et simule un événement multitouch unique utilisant "la souris" comme la propriété de l'identifiant du contact, qui pourrait être utile avec le débogage. Je vais essayer d'avoir le projet en ligne demain soir.

    Il faut qu'un certain nombre de mises à jour et de projets soient ajoutés, mais voici un lien:

    https://github.com/skhameneh

    EDIT: Correction, êtes-vous en train de mettre à jour le "point"? Il semble être compris à l'extérieur de ce code et changé à l'intérieur. Peut-être utile si vous avez posté le reste de votre code.

    Le créateur d'iScroll a effectivement un port qui semble fonctionner exactement comme vous le décrivez en paginant horizontalement et permettant toujours le défilement vertical. https://github.com/cubiq/2-way-iScroll

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.