Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

281
Vistas
React Native anidado ScrollView bloqueando

Estoy tratando de anidar ScrollViews en React Native; un desplazamiento horizontal con desplazamientos verticales anidados.

Aquí hay un ejemplo:

 var Test = React.createClass({ render: function() { return ( <ScrollView style={{width:320, height:568}} horizontal={true} pagingEnabled={true}> {times(3, (i) => { return ( <View style={{width:320, height:568}}> <ScrollView> {times(20, (j) => { return ( <View style={{width:320, height:100, backgroundColor:randomColor()}}/> ); })} </ScrollView> </View> ); })} </ScrollView> ); }, }); AppRegistry.registerComponent('MyApp', () => Test);

El scroller exterior funciona perfectamente, pero el interior se pega cuando lo tocas mientras se mueve. Lo que quiero decir es: si te desplazas, levantas el dedo y lo vuelves a tocar mientras todavía se está moviendo con impulso, se detiene y no reacciona en absoluto a los movimientos táctiles. Para desplazarte más tienes que levantar el dedo y tocar de nuevo.

Esto es tan reproducible que se siente como algo relacionado con Gesture Responder.

¿Alguien ha visto este problema?

¿Cómo podría comenzar a depurar esto? ¿Hay alguna manera de ver qué está respondiendo a los toques, otorgando y liberando, y cuándo?

Gracias.

Actualizar:

Parece que es el sistema de respuesta, al colocar oyentes onResponderMove en los desplazadores internos y externos:

 <ScrollView onResponderMove={()=>{console.log('outer responding');}} ... <ScrollView onResponderMove={()=>{console.log('inner responding');}}> ...

Está claro que el ScrollView externo está tomando el control. La pregunta, supongo, es ¿cómo evito que el desplazador externo tome el control cuando intento desplazarme verticalmente? ¿Y por qué esto solo sucede cuando intenta desplazar un ScrollView interno que ya se está moviendo?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Si está trabajando con RN> 56.0, solo agregue este accesorio a sus vistas de desplazamiento:

 <ScrollView nestedScrollEnabled = {true}> ...... <ScrollView nestedScrollEnabled = {true}> ..... </ScrollView> </ScrollView>

Ese es el único que me funcionó.

over 4 years ago · Santiago Trujillo Denunciar

0

En su panresponder para el interno, intente configurar esto:

 onPanResponderTerminationRequest: () => false
over 4 years ago · Santiago Trujillo Denunciar

0

La respuesta de @IlyaDoroshin y @David Nathan me indicó la dirección correcta, pero tuve que envolver cada elemento en la vista de desplazamiento con un toque, en lugar de un toque para todo.

 <ScrollView> ... <ScrollView horizontal> {items.map(item => ( <TouchableWithoutFeedback> { /* your scrollable content goes here */ } </TouchableWithoutFeedback> ))} </ScrollView> </ScrollView>
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda