2012-04-30 9 views
5

Estoy haciendo una aplicación móvil con PhoneGap. Tengo esto-¿Cómo detener el desplazamiento de la página mientras ... aún permite el desplazamiento?

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

Usted sabe cómo se puede arrastrar una página de un diminuto maneras fuera de la pantalla del teléfono inteligente arrastrándolo, y después que salga la derecha de nuevo cuando lo suelte? ¿Y todo lo que ves detrás es negro? Eso es lo que este código debe prevenir. Y lo hace.

Pero también evita todos los desplazamientos estándar, como desplazarse por una lista. ¿Alguien sabe alguna solución?

+0

Creo que lo arreglaría sería probar si la página se ha movido de la pantalla debido al evento y luego solo evitar el valor predeterminado. –

+0

¿Cómo en EARTH prueba para eso? – New2This

+0

Deshabilitar eso podría confundir a las personas acostumbradas a ese comportamiento en sus teléfonos. Solo algo a considerar. –

Respuesta

7

Una solución fácil para Cordova 1.7+ Localice Cordova.plist en su proyecto de Xcode. En la parte superior, dirá "UIWebViewBounce". Ponlo en NO.

+0

Guau, gran consejo. – New2This

3

tiene dos opciones:

  1. iScroll - Super eficaces en dar a este efecto. De acuerdo, tiene sus limitaciones.

  2. -webkit-overflow-scrolling: touch; un nuevo método css introducido en ios 5 funciona bien, pero una vez más tiene sus limitaciones dentro de phonegap.

Personalmente utilizo iScroll para aplicaciones PhoneGap, funciona muy bien si usted no tiene un super larga lista de artículos que se desplaza. Si está buscando una forma más nativa, sugeriría el método de desplazamiento de desbordamiento, esto ha demostrado causar algunos efectos extraños en la vista web. Phonegap usa webview vs mobile safari para que su soporte difiera un poco.

iScroll - http://cubiq.org/iscroll-4 webkit-desplazamiento - http://johanbrook.com/browsers/native-momentum-scrolling-ios-5/

2

se debe añadir esto en su etiqueta de la cabeza: (No hay necesidad de su código oyente ahora)

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

Esto básicamente desactiva la escala (zoom in/out) y ese efecto de arrastre que no desea. Por lo tanto, la página no se desplazará, pero el evento Touchmove se puede rastrear.

+0

Tristemente ya lo tengo y no produce el resultado deseado. – New2This

+0

¡esa es la única solución que funcionó para mí! – lunarnet76

Cuestiones relacionadas