防止在本机反应中按下 TextInput 时显示系统键盘

Posted

技术标签:

【中文标题】防止在本机反应中按下 TextInput 时显示系统键盘【英文标题】:Prevent system Keyboard from showing when TextInput is pressed in react native 【发布时间】:2020-04-19 21:46:20 【问题描述】:

我想在按下输入字段时显示我的自定义键盘组件。我想防止系统默认键盘被触发。

我尝试在 onFocus 上关闭键盘,但这会触发键盘,然后关闭键盘。

 <TextInput
     placeholder="type here"
     onFocus=Keyboard.dismiss
 />

我已经厌倦了将 TextInput 包装在 TouchableWithoutFeedback 中,但这个解决方案不起作用。

<TouchableWithoutFeedback
    onPress=() => Keyboard.dismiss()
    accessible=false
>
    <View>
        <TextInput placeholder="type here" />
    </View>
</TouchableWithoutFeedback>

有什么想法可以达到预期的效果吗?

【问题讨论】:

您不必为此使用TextInput。您可以在TouchableWithoutFeedback 中放置一个Text 来触发键盘,将您的自定义键盘输入保存为某种状态或其他内容,然后将值传递给Text 我想到了这个想法,但Text 组件的行为与TextInput 不同。 【参考方案1】:

您可以在 android 上使用 showSoftInputOnFocus,请参阅文档: https://facebook.github.io/react-native/docs/textinput#showsoftinputonfocus

您的情况与连接外接键盘时避免显示键盘相同(在 iPad 上很常见)。

【讨论】:

这正是我所需要的。非常感谢。【参考方案2】:

在你项目的(android>app>src>main)文件夹中打开AndroidManifest文件,然后添加:

android:windowSoftInputMode="stateHidden"

到你的活动标签是这样的:

<activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
    android:windowSoftInputMode="stateHidden">

【讨论】:

android:windowSoftInputMode="stateHidden" 仍然触发键盘。 可以参考这个链接:reactnativecode.com/manually-hide-soft-keyboard

以上是关于防止在本机反应中按下 TextInput 时显示系统键盘的主要内容,如果未能解决你的问题,请参考以下文章

在提交时清除所有 textInput 字段反应本机

TextInput 中的每次按键后键盘都会关闭本机反应

反应原生 TextInput 离开我的屏幕

在 React Native 中按下回车时如何禁用在多行 TextInput 中插入新行

在此项目中按下 TouchableOpacity 后,如何将焦点设置为列表项中的一个 TextInput?

如何防止在 ag-grid-react cellEditor 组件中按下“Enter”键的事件传播?