Question de défilement d'application HTML5 HTML

Je ne sais pas si cela est même possible ou à Google pour le trouver, mais comme vous pouvez ajouter:

<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0"/> 

Et cela le fera de sorte que vous ne pouvez pas faire défiler côte à côte, seulement en haut et en bas. Existe-t-il un moyen de le faire pour ne pas faire cet effet de dépassement lorsque vous atteignez la fin, mais continuez à faire défiler et puis-t-il revenir en arrière? Comme les applications Cocoa ont remarqué que "overscroll" parfois, ils ont la même couleur d'arrière-plan, donc il ne ressemble pas à Safari ou ça ne le fait pas du tout?

Ce que vous appelle overscroll s'appelle rebond. Malheureusement, il n'y a pas de manière documentée de désactiver le rebond dans un UIWebView. Vous pouvez consulter UIScrollView pour les méthodes liées au rebond. Un UIWebView possède UIScrollView mais ne l'expose pas.

Pour éviter le défilement horizontal, il vous suffit de vous assurer que votre page Web s'insère dans la fenêtre. Une cause commune de non-ajustement est un élément de 100% de largeur lorsque la marge du corps n'est pas nulle.

Vous pouvez empêcher complètement le défilement et le rebond en ajoutant des gestionnaires d'événements tactiles au document et en appelant preventDefault sur l'événement. Cela désactivera efficacement le rebond si votre page Web est parfaitement adaptée à la fenêtre.

 function stopScrolling( touchEvent ) { touchEvent.preventDefault(); } document.addEventListener( 'touchstart' , stopScrolling , false ); document.addEventListener( 'touchmove' , stopScrolling , false ); 

Modifier:

UIWebView est principalement privé du côté Objective-C mais assez accessible du côté javascript. Vous pouvez injecter javascript si vous ne contrôlez pas le contenu en cours de chargement.

Si vous utilisez Cordova 1.7+, ouvrez simplement le fichier Cordova.plist et définissez la clé UIWebViewBounce sur NO

Dans Cordova 2.3+, il s'agit maintenant de config.xml et vous devez le configurer sur false .

@ JSW189

Si vous supprimez cette ligne:

 document.addEventListener( 'touchstart' , stopScrolling , false ); 

Ensuite, cela devrait fonctionner, je suppose. J'ai eu le problème que je ne pouvais plus appuyer sur les boutons, j'essaie de supprimer cette ligne ci-dessus et elle ne défilait plus et je pouvais appuyer sur les boutons.

La solution pour les versions précédentes de Cordova est sur la publication suivante: http://tripleshotsoftware.blogspot.ch/2012/09/stop-uiwebview-bounce-for-cordova-based.html

Modifiez le fichier MainViewController.m (ou AppDelegate.m dans les anciennes versions de Cordova / Callback / PhoneGap).

Recherchez WebViewDidFinishLoad, et dans cette méthode, ajoutez la ligne suivante:

 [[theWebView.subviews objectAtIndex:0] setBounces:NO];