我试图在中嵌套ScrollViews;一个带有嵌套垂直卷轴的水平滚动体。
下面是一个例子:
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);外滚轮工作得完美无缺,但当你触摸它的时候,它的内部就会粘住。我的意思是:如果你滚动,举起你的手指,再一次触摸它,当它还在动的时候,它就停止了,对触摸动作完全没有反应。要滚动更多,你必须举起你的手指,并再次触摸。
这是如此的可重复性,让人感觉像是与手势应答者有关。
有人看过这个问题吗?
我怎么才能开始调试呢?有没有一种方法可以看到什么是对触碰、允许和释放的反应,以及什么时候?
谢谢。
更新:
通过将onResponderMove侦听器放置在内部和外部滚动器上,它看起来像是响应器系统:
<ScrollView
onResponderMove={()=>{console.log('outer responding');}}
...
<ScrollView
onResponderMove={()=>{console.log('inner responding');}}>
...很明显,外部ScrollView正在抓取控制。问题是,我想,当我试图垂直滚动时,如何阻止外部滚轮控制?为什么只有当你试图滚动一个已经在移动的内部ScrollView时才会发生这种情况呢?
发布于 2019-11-03 00:13:33
如果使用RN > 56.0,只需将此支柱添加到滚动视图中即可:
<ScrollView nestedScrollEnabled = {true}>
......
<ScrollView nestedScrollEnabled = {true}>
.....
</ScrollView>
</ScrollView>那是唯一为我工作的人。
发布于 2015-09-17 19:19:48
在您的内部响应器中,尝试设置以下内容:
onPanResponderTerminationRequest: () => false发布于 2018-06-22 22:08:03
@IlyaDoroshin和大卫·内森的回答为我指明了正确的方向,但我必须用一个可触摸的东西来包装每一件物品,而不是任何东西都可以触摸到。
<ScrollView>
...
<ScrollView horizontal>
{items.map(item => (
<TouchableWithoutFeedback>
{ /* your scrollable content goes here */ }
</TouchableWithoutFeedback>
))}
</ScrollView>
</ScrollView>https://stackoverflow.com/questions/29756217
复制相似问题