Ich versuche ScrollViews in React Native zu verschachteln; ein horizontaler Scroll mit verschachtelten vertikalen Scrolls.Reagiere native verschachtelte ScrollView-Sperre
Hier ist ein Beispiel:
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);
Die äußere scroller funktioniert einwandfrei, aber die innere Sticks, wenn man sie berührt, während er sich bewegt. Was ich meine ist: Wenn du scrollst, hebst du deinen Finger und berührst ihn erneut, während er sich noch mit Schwung bewegt, er stoppt und reagiert überhaupt nicht auf Berührungen. Um mehr zu blättern, müssen Sie Ihren Finger heben und erneut berühren.
Dies ist so reproduzierbar es fühlt sich an wie etwas mit dem Gesture Responder zu tun.
Hat jemand dieses Problem gesehen?
Wie würde ich überhaupt damit anfangen zu debuggen? Gibt es eine Möglichkeit zu sehen, was auf Berührungen reagiert, gewährt und freigibt und wann?
Danke.
Update:
Es sieht aus wie es die Responder-System, indem onResponderMove
Zuhörer auf den inneren und äußeren scrollers:
<ScrollView
onResponderMove={()=>{console.log('outer responding');}}
...
<ScrollView
onResponderMove={()=>{console.log('inner responding');}}>
...
Es ist klar, dass die äußere Scrollsteuerung greifen. Die Frage ist, wie kann ich verhindern, dass der äußere Farbwechsler beim vertikalen Scrollen die Kontrolle übernimmt? Und warum passiert das nur, wenn Sie versuchen, einen bereits bewegten inneren ScrollView zu scrollen?
Sehen Sie dieses Verhalten in t Der Simulator auch? Es ist nicht sofort klar, was Sie hier praktisch machen wollen - vielleicht gibt es eine einfachere Methode. –
Ja. Passiert auch im Simulator. Ein gutes Beispiel dafür, was ich suche, ist Gilt. Sie können vertikal durch Produkte und horizontal durch Kategorien blättern. Ein anderes ist Netflix, obwohl es umgekehrt ist, da es mehrere horizontale Scrolls innerhalb eines vertikalen Scrolls gibt. – nicholas
Haben Sie eine Lösung gefunden? Ich möchte den Kerncode nicht ändern. – TYRONEMICHAEL