【问题标题】:TouchableOpacity onPress() not working with react-native-modalTouchableOpacity onPress() 不适用于 react-native-modal
【发布时间】:2019-11-20 18:03:52
【问题描述】:

我正在尝试让 TouchableOpacity 与 react-native-modal 一起使用。当我按下按钮时,什么也没有发生。

这是我的代码,按下按钮时,没有按下动画,也没有出现警报:

<Modal
  isVisible={this.state.modalVisible}
  onBackdropPress={() => this.setState({ modalVisible: false })}
  deviceWidth={Dimensions.get('window').width}
  deviceHeight={Dimensions.get('window').height}
  backdropColor={'rgba(29, 36, 40, 0.5)'}>
  <View style={styles.modal}>
    <Text style={styles.modalTitle}>Test modal</Text>
    <View style={modalButtons}>
      <TouchableOpacity onPress={() => alert('hello!')}><Text style={styles.modalButton}>Test</Text></TouchableOpacity>
      <TouchableOpacity onPress={() => this.setState({ modalVisible: false })}><Text style={styles.modalButton}>Close</Text></TouchableOpacity>
    </View>
  </View>
</Modal>

我从 react-native 导入 TouchableOpacity,而不是 react-native-gesture-handler(一个解决方案提到了这一点;它对我所做的只是防止按钮不可见)。

编辑:我已将范围缩小到按钮周围的视图。当我删除以下样式时,它可以工作:

  modalButtons: {
    flex: 1,
    flexDirection: 'row',
    justifyContent: 'space-between',
    marginBottom: 30,
  },

有没有办法保持这种弹性工作?我希望按钮并排显示。

【问题讨论】:

  • 你能尝试用&lt;React.Fragment&gt;&lt;View&gt;包装TouchableOpacity吗?
  • 抱歉回复晚了,它似乎没有用@DivyeShah
  • 删除边距有什么不同吗?尝试使用 TouchableWithoutFeedback 来检查它是否有任何不同?
  • 使用 TouchableWithoutFeedback 解决了这个问题,但它不显示任何文本。
  • 通过 TouchableWithoutFeedback 包装 TouchableOpacity 会显示文本,但它会返回到不响应任何输入。

标签: react-native


【解决方案1】:

我遇到了同样的问题。检查您的TouchableOpacity 是从"react-native" 模块导入的,而不是从其他任何模块导入的。 (我在react-native-gesture-handler。)

【讨论】:

  • 太棒了!非常感谢!
猜你喜欢
  • 2018-08-20
  • 1970-01-01
  • 2019-07-13
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 2020-06-27
  • 2020-09-19
  • 1970-01-01
相关资源
最近更新 更多