我有一个标准的TextInput包装在滚动视图中。当我在文本输入之外点击时,焦点会像预期的那样模糊。
然而,有时我在文本输入中点击一个按钮,期望按钮立即做出响应。然而,第一次点击总是会使文本输入失去焦点。
预期的行为是第一次点击会自动取消文本输入的焦点,同时对按钮点击做出响应。有办法做到这一点吗?
很可能您需要将ScrollView
的keyboardShouldPersistTaps
道具从默认的never
更改为。。。到handled
。。。并手动dismiss
您的button
处理器上的键盘。。。
<ScrollView keyboardShouldPersistTaps="always">...</ScrollView>
'never'(默认值),当键盘向上时,键盘将关闭。当这种情况发生时,孩子们不会收到敲击声。
"始终",键盘不会自动关闭,并且滚动视图不会捕捉到轻击,但滚动视图的子级可以捕捉到水龙头。
"已处理",敲击时键盘不会自动关闭由滚动视图的子级处理(或由祖先)。
编辑
<ScrollView
keyboardShouldPersistTaps="handled" // <-- here
>
<TextInput />
<Button
title="Click Me"
onPress={() => {
Keyboard.dismiss(); // <--- here
Alert.alert('Button', 'Clicked!');
}}
/>
</ScrollView>