Pregunta sobre objective-c, mobile-safari, ios, javascript, cordova – Deshabilita el efecto de rebote vertical en una aplicación web de ipad

4

¿Hay una manera de deshabilitar el efecto de rebote en un div de desplazamiento?

Hasta ahora he intentado estas cosas pero ninguna funcionó. ¡Por favor ayuda!

Cómo deshabilitar el rebote / desplazamiento vertical en iPhone en una aplicación web móvil

No se puede deshabilitar el rebote con UIScrollView y pagingEnabled = YES

ipad safari: deshabilita el desplazamiento y el efecto de rebote?

Deshabilita los rebotes verticales de UITableView al desplazarse

Y

http://www.iphonedevsdk.com/forum/iphone-sdk-development/996-turn-off-scrolling-bounces-uiwebview.html

¡Gracias!

El enlace que publiqué también parece que también tiene una solución PhoneGap. Es posible que desee intentarlo. woz
No no obtuve ningún error. imhere
De acuerdo. Algunos de sus enlaces mencionan UIScrollView o UITableView, por lo que no le ayudarán si está creando una página HTML. ¿Puedes publicar tu implementación de una de las técnicas de JavaScript que usaste? woz
¿Obtiene algún error en la consola de errores para alguna de las soluciones? woz

Tu respuesta

5   la respuesta
1

Esto le ayudará a colocar la clase .scroll en el elemento que desea que aún tenga desplazamiento.

Lo que sucede es que todos los movimientos táctiles están deshabilitados por defecto. Si el elemento que desea desplazar tiene la clase .scroll en él, establece la puerta en verdadero para permitir que pase.

En el toque final, restablece la puerta a falso.

Esto funciona en IOS5 y 6 y podría funcionar en Chrome y Safari

Mira @ este post para ampliarlo.
¿Cómo evitar el desplazamiento de páginas al desplazar un elemento DIV?

La única pega a esto es que si se desplaza sobre el elemento desplazable, el efecto elástico permite que el desplazamiento se pase por el árbol mientras el desplazamiento se establece en verdadero. La configuración manual de la posición de desplazamiento se anula por el efecto de rebote temido.
Apuesto a que los friggers de Apple tienen una implementación nativa de scroll en un tiempo de espera establecido con cada paso conectado.

Entonces, si se desplaza a -20, creo que es difícil conectar cada paso en un bucle sin verificar dónde estaba. Desplazamiento a -20 -19 -18 etc. en secuencia.

¡Debemos pensar en una forma de evitar esto! (De hecho, escribiéndolo cargando tengo una idea!)

$(function(){
  var scroll = false
  var scroll_element;
  $('body').on('touchmove',function(e){
      if(!scroll){
      e.preventDefault()
      }
  })
  $('body').on('touchend',function(e){
      scroll = false
  })  
  $('.scroll').on('touchstart',function(e){
      scroll_element = this
      scroll = true
  })  
})
3

Abra su proyecto de phoneGapconfig.xml archiva y cambia UIWebViewBounce de predeterminado verdadero a falso:

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

No puedo imaginar por qué el valor predeterminado es verdadero ...

El último comentario de russter funciona perfecto para mí en Córdoba 3.3 Mi vida fue salvada. Gracias. JSG33kC0d3
Creo que la nueva preferencia si tiene una versión posterior de phonegap / cordova es <preferences name = "DisallowOverscroll" value = "true" /> Al menos eso es lo que me funcionó con cordova 2.7.0 russter
0

Sé que esta puede no ser la mejor manera pero funciona.

Aquí esta lo que hice -

#scrollableDiv {
    position:fixed;
    top:50px;
    width:300px;
    height:500px;
    word-wrap: break-word;
    overflow-y: scroll; 
}

document.getElementById("scrollableDiv").innerHTML = longText;
document.getElementById("scrollableDiv").scrollTop = 0;
Para evitar el rebote horizontal, asegúrese de que el contenido no se desborda. imhere
1

Según su comentario, el código que está utilizando es el deshabilitar el desplazamiento completo. Si desea desplazarse, pero sin el efecto de rebote, intente algo como esto:

var xStart, yStart = 0;

document.getElementById("scrollableDiv").addEventListener('touchstart',function(e) {
    xStart = e.touches[0].screenX;
    yStart = e.touches[0].screenY;
});

document.getElementById("scrollableDiv").addEventListener('touchmove',function(e) {
    var xMovement = Math.abs(e.touches[0].screenX - xStart);
    var yMovement = Math.abs(e.touches[0].screenY - yStart);
    if((yMovement * 3) > xMovement) {
        e.preventDefault();
    }
});

Encontré esta soluciónaquí. Déjame saber si te funciona.

Todavía no funcionaba. imhere
Acabo de editar el código. Debería haber usadodocument.getElementById("scrollableDiv").addEventListener(... en lugar dedocument.addEventListener(... en ambos lugares. Eso podría ser por qué no funcionó. woz
Gracias, pero esto desactiva el rebote, así como el desplazamiento. imhere
6

Si está utilizando Cordova 1.7, simplemente abra elCordova.plist archiva y establece la claveUIWebViewBounce aNO.

Gracias por tu aporte pero ya encontré una solución. imhere
Afortunadamente este chico encontró una mejor solución, ¡Gracias! Likwid_T

Preguntas relacionadas