Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

280
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

0

En su panresponder para el interno, intente configurar esto:

 onPanResponderTerminationRequest: () => false
over 4 years ago · Santiago Trujillo Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda