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

Posted

技术标签:

【中文标题】在 React Native 中按下回车时如何禁用在多行 TextInput 中插入新行【英文标题】:How to disable inserting new line in multiline TextInput when enter is pressed in React Native 【发布时间】:2020-06-09 18:37:07 【问题描述】:

我想构建一个多行文本输入的聊天应用程序,用户可以在按下输入时发送消息。然而,当用户按下回车键时,无论如何都会插入新行,这会给用户带来不好的体验。

我已经尝试过How to prevent new line when enter is pressed in react-native,但用户在键盘上按 Enter 后新行仍然存在。 当onChangeText 被触发时,我还尝试修剪文本,但似乎仍插入了新行。我知道它在blurOnSubmit=true 时有效,但我想在用户按 Enter 时保持键盘打开。

【问题讨论】:

您可以在输入按钮键码的 keydown 上使用事件监听器 我试过了,但是在我的代码中 onKeyPress 的触发时间比 onChangeText 晚,所以新行已经插入然后调用 onKeyPress。 我现在无法测试它,但是作为一种解决方法,删除 onKeyPress 的最后一个字符(即新行)怎么样? 正如我所说,新行首先插入然后onKeyPress 被触发。如果我删除onKeyPress中的新行,用户会注意到屏幕的闪烁。 【参考方案1】:

只需将其添加到 TextInput -> blurOnSubmit=true

例如:

<TextInput multiline=true numberOfLines=1 blurOnSubmit=true />

【讨论】:

问题说他们想在用户按回车时保持键盘打开,blueOnSubmit=true 将关闭它

以上是关于在 React Native 中按下回车时如何禁用在多行 TextInput 中插入新行的主要内容,如果未能解决你的问题,请参考以下文章

使用 TouchableHighlight 在 React Native 中按下时如何更改按钮颜色?

在 React-native 中按下按钮后双触发

在jsf组件中按下回车键时限制Ajax机制

如何使用useFormik在输入时禁用表单提交?

在 contenteditable div 中按下回车后不会触发 onInput

当用户在文本框中按下回车键时如何不关闭表单