Désactiver le défilement dans un iPhone application web?
Est-il possible de désactiver complètement la page web de défilement dans un iPhone application web? J'ai essayé de nombreuses choses posté sur google, mais aucune ne semble fonctionner.
Voici mon actuel de l'en-tête de l'installation:
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=no;"/>
<meta name="apple-mobile-web-app-capable" content="yes"/>
document.body.addEventListener('touchmove', function(e){ e.preventDefault(); });
ne semble pas fonctionner.
- kendall, auriez-vous l'esprit en ajoutant plus de votre code afin que je puisse voir ce qui s'est passé dans... je suis assez nouveau sur ce - voici ce que j'ai ne fonctionne pas:
<script language="javascript"> document.body.addEventListener('touchmove', function(e){ e.preventDefault(); }); document.body.addEventListener('touchstart', function(e){ e.preventDefault(); }); </script>
- passons sur le fait que j'ai utilisé ceci:
document.ontouchmove = function(e){ e.preventDefault(); }
Vous devez vous connecter pour publier un commentaire.
'auto.webView.le scrollView.rebondit = N;'
Juste ajouter une ligne dans le "viewDidLoad" de la mainViewController.m fichier de votre application. vous pouvez l'ouvrir dans Xcode et l'ajouter .
Cela devrait rendre la page, sans ruban rebondit en permettant le défilement dans la vue d'application.
Changement à la
touchstart
de l'événement au lieu detouchmove
. En vertu de Un Doigt Événements il dit que non, les événements sont envoyés pendant une casserole, afintouchmove
peut-être trop tard.J'ai ajouté le port d'écoute du document, pas le corps.
Exemple:
<script language="javascript"> document.body.addEventListener('touchmove', function(e){ e.preventDefault(); }); document.body.addEventListener('touchstart', function(e){ e.preventDefault(); }); </script>
document.ontouchmove = function(e){ e.preventDefault(); }
$(document).on('touchstart touchmove', function(e){ e.preventDefault(); });
Ne pas utiliser le
ontouchmove
propriété pour inscrire le gestionnaire d'événement que vous exécutez au risque de remplacement d'un gestionnaire d'événement(s). Utilisation la méthode addEventListener à la place (voir la note sur IE sur le MDN page).Méfiez-vous que la prévention par défaut pour le
touchstart
de l'événement sur lawindow
oudocument
va désactiver le défilement de la descente de domaines.Pour empêcher le défilement du document, mais laisser tous les autres événements intacte prévenir par défaut pour la première
touchmove
cas suivantstouchstart
:La raison pour laquelle cela fonctionne est que le navigateur Safari mobile est en utilisant le premier à déterminer si le corps du document est en cours de défilement. J'ai réalisé cela en même temps de concevoir une solution plus complexes.
Dans le cas où cela serait jamais cesser de travailler, la solution plus élaborée consiste à inspecter le
touchTarget
élément et de ses parents et de faire une carte de directions que vous pouvez faire défiler à l'. Utilisez ensuite la premièretouchmove
événement à détecter le sens de défilement et de voir si c'est pour faire défiler le document ou l'élément cible (ou de l'élément cible, parents):La raison pour laquelle cela fonctionne est que le navigateur Safari mobile est à l'aide de la touche de première déplacer afin de déterminer si le corps du document est en cours de défilement ou les élément (ou de l'élément cible, parents) et le bâton de la présente décision.
Si vous utilisez jquery 1.7+, ce qui fonctionne bien:
$(elem).removeClass('donotscrollme');
Cela devrait fonctionner. Pas plus de zones grises en haut ou en bas:)
Mais cela désactive également les zones de défilement. Si vous voulez garder vos zones de défilement et toujours retirer la bande de caoutchouc en effet en haut et en bas, voir ici: https://github.com/joelambert/ScrollFix.
Désactiver:
Permettre:
La page doit être lancé à partir de l'écran d'Accueil pour la balise meta de travail.
est en fait le meilleur choix que j'ai découvert il vous permet d'être toujours en mesure de taper sur les champs de saisie ainsi que traîner les choses à l'aide de jQuery UI déplaçable, mais il s'arrête à la page à partir de défilement.
J'ai essayé réponses ci-dessus, et en particulier Gajus mais aucun ne fonctionne. J'ai enfin trouvé la réponse ci-dessous pour résoudre le problème tel que seul le corps n'a pas de défilement, mais défilement autres sections à l'intérieur de mon application web tous les beaux travaux.
Simplement définir la position fixe pour votre corps: