TouchableOpacity 内的 ScrollView

Posted

技术标签:

【中文标题】TouchableOpacity 内的 ScrollView【英文标题】:ScrollView inside TouchableOpacity 【发布时间】:2017-08-18 22:28:24 【问题描述】:

我正在尝试在TouchableOpacity 组件内设置水平ScrollView(出于必要的原因)。然而TouchableOpacity 会覆盖任何水平滚动功能并执行onPress,即使对于水平触摸移动也是如此。 有没有办法让ScrollView 触摸事件优先于父Touchable?这样,用户可以滚动组件并按下它。下面是一个类似于我正在尝试实现的代码 sn-p。

<TouchableOpacity
    onPress=this._onPress>
    <View>
        ... Some view I want static ...
    </View>
    <ScrollView
        horizontal=true>
        ... A bunch of components I want scrollable ...
    </ScrollView>
</TouchableOpacity>

谢谢!

【问题讨论】:

为什么不能把Scrollview放在Touchable下面?如果应该可以在按下 scrollView 时发送触摸事件(仅按下,而不是滚动时),我认为这是不可能的。 Touchable 在第一次初始化时如何知道按下时的动作是否会变成滚动条? 【参考方案1】:

你可以试试这个。我试过你的代码,它对我有用。

<TouchableOpacity>
  <View>
    <Text>... Some view I want static ...</Text>
  </View>
  <ScrollView horizontal>
    <View onStartShouldSetResponder=() => true>
      <Text>... A bunch of components I want scrollable ...</Text>
    </View>
  </ScrollView>
</TouchableOpacity>

【讨论】:

太棒了!这很好用 是的,它也对我有用!【参考方案2】:

@Henning Hall 在这里有正确答案,但如果失败,您可以在任一组件上实现 PanResponder 以获得所需的触摸事件。

【讨论】:

以上是关于TouchableOpacity 内的 ScrollView的主要内容,如果未能解决你的问题,请参考以下文章

图标的 TouchableOpacity 和 onPress

react native:TouchableOpacity 组件上的样式道具

React Native 无法点击 TouchableOpacity 或 TextInput

项目映射时获取键和项目 onPress TouchableOpacity

在具有 backgroundColor 的 MapView 上方时,TouchableOpacity 不可点击

TouchableOpacity 和按钮在反应原生模态中不起作用?