我现在正在处理一个由TextInput和ListView组成的搜索组件。它从外部服务器加载其结果并相应地填充ListView。
还有一个关闭搜索组件的TouchableOpacity。
不幸的是,需要两次按下来获取被调用的TouchableOpacity的onPress回调 - 一个让TextInput失去焦点,一个用来触发回调。 但是,如果我按下TouchableOpacity来关闭搜索组件,或者如果我按下“react-native-scrollable-tab-view”组件的其中一个选项卡,它会立即做出反应,TextInput甚至会保持其焦点。
所以,我想知道是否有人知道ListView是否因为其滚动功能而以某种方式消耗了触摸。
答案 0 :(得分:27)
ScrollView
(和遗留ListView
)组件有一个道具keyboardShouldPersistTaps
,它有三个选项:
never
(默认设置),在键盘启动时点击聚焦文本输入外部,取消键盘。发生这种情况时,孩子们不会收到水龙头。always
,键盘不会自动关闭,滚动视图不会捕捉到点击,但滚动视图的子项可以捕捉到点击。handled
,当孩子处理水龙头(或由祖先捕获)时,键盘不会自动解除。<ScrollView keyboardShouldPersistTaps="always">
// Your TextInput and Button here…
</ScrollView>
我将此属性设置为true,它按预期工作。 =)