首页 > 解决方案 > React Native:iOS 听写无法清除文本输入

问题描述

我在用于编写和发送消息的 React Native 应用程序中有一个非常基本的 TextInput + Button 组合,如下所示:

<TextInput
    type="text"
    ref={input => {
       this.inputRef = input;
    }}
    style={styles.userInput}
    name="userInput"
    autoCorrect={false}
    placeholder="Type something..."
    autoFocus={false}
    autoComplete="off"
    onChangeText={this.watchInput}
    returnKeyType="done"
/>

<Button
    disabled={!this.state.isValidInput}
    style={styles.sendButton}
    title="Send"
    textStyle={{fontSize: 12}}
    onPress={this.handleSubmit}
    accessibilityLabel="Press this button to send your message"
/>

当按下 Button 时,我使用 handleSubmit 函数来处理输入字段的消息发送和重置,如下所示:

handleSubmit = async () => {
   const message = this.state.input; // get input from state

   Keyboard.dismiss() // hide keyboard
   this.inputRef.clear(); // clear TextInput
   this.setState({ input: '' }); // reset input state
   this.setState({ isValidInput: false }); // reset input state
   this.stretchInputField()
   var r = await this.props.myAwesomeSendMessageFunction() // send message
 }

这在使用实际的 Button 进行发送时效果很好,但是如果我在 iOS 键盘中使用听写,它会在我说完后发送消息,但输入字段没有被清除,所以我只剩下处理程序已发送的字段中的相同输入。

任何想法为什么它与听写一样工作以及如何让它在发送时清除输入字段?

反应原生版本 0.57.8

标签: javascriptiosreact-native

解决方案


您是否在文本输入中绑定了您的值?

尝试在文本输入中绑定您的输入,例如 value ={this.state.input}


推荐阅读