2016-03-03 13 views
5

Mam TextInput, które włączono jako multiline. Rzecz polega na tym, że klawiatura nie ukryje się po naciśnięciu przycisku Powrót. Przechodzi do nowej linii. Tak więc miałem nadzieję użyć react-native-dismiss-keyboard. Aby to wykorzystać, muszę zidentyfikować działanie klawisza Return. Jak to zrobić?Zidentyfikuj działanie klawisza powrotu w React Native

<TextInput 
    style={styles.additionalTextInput} 
    multiline={true} 
    autoCapitalize="sentences" 
    autoCorrect={true} 
    onChangeText={(text) => this.setState({text})} 
    keyboardType="default" 
    returnKeyType="done" 
    onKeyPress={(keyPress) => console.log(keyPress)} 
    placeholder="Enter text here..." 
/> 

Odpowiedz

13

Okej, znalazłem rozwiązanie.

<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(); 
    } 
}, 

Metoda opuszczaniaKeyboard jest od react-native-dismiss-keyboard.

To działa idealnie dla mnie.

+0

Jeśli wziąłeś referencję, możesz po prostu uruchomić rozmycie: 'this._textInput.blur(); // odrzuć klawiaturę ' – kevando

+9

onKeyPress jest tylko iOS, a co z Androidem? –

+1

To pomocne dzięki! –

14

Użyłem rekwizytów onSubmitEditing. na przykład

<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" 
/> 
+0

To powinna być zaakceptowana odpowiedź. – iStar