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

时间:2015-12-15 13:41:20

标签: react-native scrollview textinput

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

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

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

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

1 个答案:

答案 0 :(得分:27)

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

  • never(默认设置),在键盘启动时点击聚焦文本输入外部,取消键盘。发生这种情况时,孩子们不会收到水龙头。
  • always,键盘不会自动关闭,滚动视图不会捕捉到点击,但滚动视图的子项可以捕捉到点击。
  • handled,当孩子处理水龙头(或由祖先捕获)时,键盘不会自动解除。

实施例

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

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