2010-06-27 6 views
10

No sé si esto es posible o lo que a Google para encontrarlo, pero al igual que puedo añadir:iPhone App de desplazamiento HTML5 Pregunta

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

Y lo hará de manera que no puede desplazarse de lado a lado, solo arriba y abajo. ¿Hay alguna manera de hacerlo para que no tenga ese efecto de desbordamiento cuando llegue al final, pero siga desplazándose y luego vuelva a aparecer? Al igual que las aplicaciones de Cocoa, he notado que "overscroll" a veces tienen el mismo color de fondo por lo que no se parece a Safari o simplemente no lo hace en absoluto.

Respuesta

14

Lo que está llamando overscroll se llama rebote. Lamentablemente, no hay una forma documentada de desactivar el rebote en un UIWebView. Puede ver UIScrollView para ver los métodos relacionados con los rebotes. Un UIWebView posee un UIScrollView pero no lo expone.

Para evitar el desplazamiento horizontal, solo tiene que asegurarse de que su página web se ajuste a la ventana gráfica. Una causa común de no ajustar es un artículo de 100% de ancho cuando el margen del cuerpo no es cero.

Puede evitar por completo el desplazamiento y el rebote al agregar controladores táctiles de eventos al documento y al invocar preventDefault en el evento. Esto efectivamente desactivará el rebote si su página web encaja completamente en la ventana gráfica.

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

Editar:

UIWebView es principalmente privada desde el lado de Objective-C, pero bastante accesible desde el lado Javascript. Puede inject javascript si no controla el contenido que se está cargando.

+0

basura, gracias! ¿Sabe de una manera de hacerlo (sin JS) para hacer una posición fija, entonces? –

+0

@drawnonward. Esto funcionó muy bien para mí, excepto que deshabilitó todos mis menús 'seleccionar'. ¿Hay alguna forma de evitarlo? – JSW189

5

Si está utilizando Cordova 1.7+, basta con abrir el archivo Cordova.plist y establecer la clave UIWebViewBounce a NO

En Córdoba 2.3+, esto ahora se config.xml y hay que configurarlo para que false .

2

@ JSW189

si elimina esta línea:

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

entonces debería funcionar, supongo. Obtuve el problema de que no podía presionar los botones más, trato de eliminar esta línea de arriba y no se movía más y podía presionar los botones.

+0

Esto también funcionó para mí – Mike

Cuestiones relacionadas