57 votes

Comment empêcher le défilement vertical d'une application s'exécutant dans le vide du téléphone ?

Je suis en train d'essayer l'écart téléphonique et je veux que mon application ne défile pas de haut en bas lorsque l'utilisateur fait glisser son doigt sur l'écran. Voici mon code. Quelqu'un peut-il me dire pourquoi le défilement est toujours autorisé ?

   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <meta name = "viewport" content = "user-scalable=no,width=device-width" />
    <!--<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" />-->

    <meta http-equiv="Content-type" content="text/html; charset=utf-8">

    <!-- iPad/iPhone specific css below, add after your main css >
    <link rel="stylesheet" media="only screen and (max-device-width: 1024px)" href="ipad.css" type="text/css" />        
    <link rel="stylesheet" media="only screen and (max-device-width: 480px)" href="iphone.css" type="text/css" />       
    -->
    <!-- If you application is targeting iOS BEFORE 4.0 you MUST put json2.js from http://www.JSON.org/json2.js into your www directory and include it here -->
    <script type="text/javascript" charset="utf-8" src="phonegap.0.9.5.1.min.js"></script>
    <script type="text/javascript" charset="utf-8">

    // If you want to prevent dragging, uncomment this section
    /*
    function preventBehavior(e) 
    { 
      e.preventDefault(); 
    };
    document.addEventListener("touchmove", preventBehavior, false);
    */

    /* If you are supporting your own protocol, the var invokeString will contain any arguments to the app launch.
    see http://iosdevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html
    for more details -jm */
    /*
    function handleOpenURL(url)
    {
        // TODO: do something with the url passed in.
    }
    */

    function onBodyLoad()
    {       
        document.addEventListener("deviceready",onDeviceReady,false);
    }

    /* When this function is called, PhoneGap has been initialized and is ready to roll */
    /* If you are supporting your own protocol, the var invokeString will contain any arguments to the app launch.
    see http://iosdevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html
    for more details -jm */
    function onDeviceReady()
    {
        // do your thing!
        navigator.notification.alert("PhoneGap is working")
    }
    touchMove = function(event) {
        // Prevent scrolling on this element
        event.preventDefault();
    }

</script>
<style>
#container {
width:100%;
height:100%;
}
</style>

</head>

    <body onload="onBodyLoad()">
        <div id="container" ontouchmove="touchMove(event);">
        </div>
    </body>
</html>

90voto

gregmatys Points 688

Si vous utilisez Cordova 2.3.0 + trouver config.xml et ajouter cette ligne :

<preference name="UIWebViewBounce" value="false" />

ou dans Cordova 2.6.0 + :

<preference name="DisallowOverscroll" value="true" />

35voto

Felipe Brahm Points 1381

Exécutez ce code au moment du chargement de la page pour désactiver le glissement :

document.addEventListener('touchmove', function(e) { e.preventDefault(); }, false);

Voici un exemple avec jQuery :

$(document).ready(function() {
    document.addEventListener('touchmove', function(e) { e.preventDefault(); }, false);
});

10voto

Spawnrider Points 535

Si vous utilisez Cordova 2.6.0 et plus trouver le config.xml, il suffit d'ajouter/modifier cette ligne :

<preference name="DisallowOverscroll" value="true" />

5voto

Ajoutez l'entrée suivante au fichier config.xml :

<preference name="DisallowOverscroll" value="true" />

4voto

zingle-dingle Points 865

Vous n'avez pas dit si c'est une application native ou une application web.

S'il s'agit d'une application native, vous pouvez désactiver le défilement de la vue Web.

UIScrollView* scroll;  //
for(UIView* theWebSubView in self.webView.subviews){  // where self.webView is the webview you want to stop scrolling.
    if([theWebSubView isKindOfClass:[UIScrollView class] ]){
        scroll = (UIScrollView*) theWebSubView;
        scroll.scrollEnabled = false;
        scroll.bounces = false;
    }
}

Sinon, voici un lien sur le wiki de phonegap pour empêcher le défilement. http://wiki.phonegap.com/w/page/16494815/Preventing-Scrolling-on-iPhone-Phonegap-Applications

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