是否可以在不使聚焦组件丢失的情况下关闭键盘



我需要在不打开键盘的情况下关注TextInput,因为在我的用例场景中,我可能有一个物理键盘连接到设备,并且我可能希望在Android上启用虚拟键盘。

我想的解决方案是将autoFocus赋予TextInput,然后在onFocus回调中,关闭键盘。

然而,TextInput也失去了焦点。

有什么可行的已知解决方案吗?

<TextInput
onChangeText={text => setState(text)}
value={state}
autoFocus
onFocus={() => {
console.log('physicalKeyboard set?', isPhysicalKeyboard())
if (isPhysicalKeyboard()) Keyboard.dismiss()
}}
/>

正如这个问题的公认答案中所建议的,有一个新的道具可以设置来实现我所需要的,那就是showSoftInputOnFocus

所以代码变成了这个

<TextInput
onChangeText={text => setState(text)}
value={state}
autoFocus
showSoftInputOnFocus={() => !isPhysicalKeyboard()}
/>

我发现在使用物理键盘时,将"showSoftInputOnFocus"设置为false并不能正常工作。在这种情况下,当组件最初获得焦点时,软键盘不会出现。但是,当你开始在物理键盘上打字时,软键盘就会出现。出于某种原因,将"keyboardType"道具设置为";数字焊盘";防止在物理键盘上键入时打开软键盘。注意,我只在安卓系统上尝试过,所以不确定这个破解是否适用于iOS。

相关内容

最新更新