Sto tentando di annidare ScrollViews in React Native; una pergamena orizzontale con scroll verticali annidati.React Native scrolled ScrollView nidificato
Ecco un esempio:
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);
La barra di scorrimento esterno funziona perfettamente, ma quella interna bastoni quando si tocca mentre è in movimento. Ciò che intendo è: se scorri, alza il dito e lo tocchi di nuovo mentre è ancora in movimento con lo slancio, si arresta e non reagisce affatto ai movimenti tattili. Per scorrere di più devi alzare il dito e toccare di nuovo.
Questo è così riproducibile che sembra essere qualcosa a che fare con il Gesture Responder.
Qualcuno ha visto questo problema?
Come potrei iniziare a eseguire il debug di questo? C'è un modo per vedere cosa risponde ai tocchi, concedere e rilasciare e quando?
Grazie.
Aggiornamento:
Sembra che è il sistema di risponditore, mettendo onResponderMove
ascoltatori sulle scrollers interno ed esterno:
<ScrollView
onResponderMove={()=>{console.log('outer responding');}}
...
<ScrollView
onResponderMove={()=>{console.log('inner responding');}}>
...
E 'chiaro che lo ScrollView esterno è afferrando il controllo. La domanda, immagino, è: come posso impedire che lo scroller esterno prenda il controllo quando si prova a scorrere verticalmente? E perché questo succede solo quando provi a scorrere un ScrollView interno già in movimento?
Vedete questo comportamento in t anche lui simulatore? Non è immediatamente chiaro cosa stai cercando di fare qui, praticamente parlando - forse c'è un metodo più semplice. –
Sì. Succede anche nel simulatore. Un buon esempio di ciò che sto cercando è Gilt. Puoi scorrere verticalmente attraverso i prodotti e orizzontalmente attraverso le categorie. Un altro è Netflix, anche se invertito in quanto hanno più pergamene orizzontali all'interno di uno verticale. – nicholas
Hai trovato una soluzione a questo? Non voglio modificare il codice principale. – TYRONEMICHAEL