TouchableOpacity 作为 ListView 中的 Item 仅在 TextInput 失去焦点后做出反应

TouchableOpacity as Item in ListView only reacts after TextInput has lost focus

我现在正在开发一个搜索组件,它由一个 TextInput 和一个 ListView 组成。它从外部服务器加载结果并相应地填充 ListView。

还有一个关闭搜索组件的 TouchableOpacity。

不幸的是,需要两次按下才能调用 TouchableOpacity 的 onPress 回调——一次让 TextInput 失去焦点,一次触发回调。 但是,如果我按下 TouchableOpacity 关闭搜索组件,或者如果我按下 "react-native-scrollable-tab-view" 组件的选项卡之一,它会立即做出反应,TextInput 甚至会保持其焦点。

所以,我想知道是否有人知道 ListView 是否由于其滚动功能而以某种方式消耗了触摸。

ScrollView(和遗留 ListView)组件有一个属性 keyboardShouldPersistTaps,它有三个选项:

  • never(默认值),当键盘启动时在聚焦文本输入的外部点击会关闭键盘。发生这种情况时,children 将不会收到点击。
  • always,键盘不会自动关闭,滚动视图不会捕获点击,但滚动视图的 children 可以捕获点击。
  • handled,当点击由 children 处理(或由祖先捕获)时,键盘不会自动关闭。

示例

<ScrollView keyboardShouldPersistTaps="always">
  // Your TextInput and Button here…
</ScrollView>

我将此 属性 设置为 true,它按预期工作。 =)