首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >响应本机嵌套ScrollView锁定

响应本机嵌套ScrollView锁定
EN

Stack Overflow用户
提问于 2015-04-20 19:00:46
回答 5查看 43.6K关注 0票数 53

我试图在中嵌套ScrollViews;一个带有嵌套垂直卷轴的水平滚动体。

下面是一个例子:

代码语言:javascript
运行
复制
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侦听器放置在内部和外部滚动器上,它看起来像是响应器系统:

代码语言:javascript
运行
复制
<ScrollView 
    onResponderMove={()=>{console.log('outer responding');}}
    ...

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

很明显,外部ScrollView正在抓取控制。问题是,我想,当我试图垂直滚动时,如何阻止外部滚轮控制?为什么只有当你试图滚动一个已经在移动的内部ScrollView时才会发生这种情况呢?

EN

回答 5

Stack Overflow用户

发布于 2019-11-03 00:13:33

如果使用RN > 56.0,只需将此支柱添加到滚动视图中即可:

代码语言:javascript
运行
复制
<ScrollView nestedScrollEnabled = {true}>
 ......
  <ScrollView nestedScrollEnabled = {true}>
    .....
  </ScrollView>
</ScrollView>

那是唯一为我工作的人。

票数 62
EN

Stack Overflow用户

发布于 2015-09-17 19:19:48

在您的内部响应器中,尝试设置以下内容:

代码语言:javascript
运行
复制
onPanResponderTerminationRequest: () => false
票数 9
EN

Stack Overflow用户

发布于 2018-06-22 22:08:03

@IlyaDoroshin和大卫·内森的回答为我指明了正确的方向,但我必须用一个可触摸的东西来包装每一件物品,而不是任何东西都可以触摸到。

代码语言:javascript
运行
复制
<ScrollView>
  ...
  <ScrollView horizontal>
    {items.map(item => (
        <TouchableWithoutFeedback>
          { /* your scrollable content goes here */ }
        </TouchableWithoutFeedback>
    ))}
  </ScrollView>
</ScrollView>
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29756217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档