I have a TextInput
which I have enabled multiline
as true. Thing is the Keyboard won\'t hide after Return is pressed. It goes to a new line. So I was h
What I used is onSubmitEditing
props. e.g.
<TextInput style={[styles.textInput]}
placeholder='搜索'
placeholderTextColor='#bbb'
onChange={(event) => {
this.searchChange(event.nativeEvent.text)
}}
returnKeyType='search'
autoFocus={true}
value={ this.props.searchName }
selectionColor={colors.orangeColor}
onSubmitEditing={this.searchSubmit}
clearButtonMode="while-editing"
/>
In case you are using with multiline={true}
, the return
key would also add the newline in the text before calling onSubmitEditing
. Also, the keyboard won't get dismissed automatically making you import { Keyboard } from 'react-native'
and calling Keyboard.dismiss()
in onSubmitEditing.
An easier solution would be to use the blurOnSubmit={true}
to automatically dismiss the keyboard and prevent return
key from registering as newline
.
Okay, found the solution.
<TextInput
style={styles.additionalTextInput}
multiline={true}
autoCapitalize="sentences"
autoCorrect={true}
onChangeText={(orderInstructions) => this.setState({orderInstructions})}
keyboardType="default"
returnKeyType="done"
onKeyPress={this.handleKeyDown}
placeholder="Enter text here..."
/>
handleKeyDown: function(e) {
if(e.nativeEvent.key == "Enter"){
dismissKeyboard();
}
},
The method dismissKeyboard is from react-native-dismiss-keyboard.
This works perfectly for me.