2016-08-02 12 views
3

Ich möchte aktuellen Text von TextInput erhalten, wenn die Tastatur durch Drücken der Suchtaste beendet wird. Um den Text zu erhalten, benutze ich onSubmitEditing, aber es wird nur zweimal aufgerufen, wenn ich returnKeyType auf 'suchen' setze. Hier ist ein Codeausschnitt.onSubmitEditing wird zweimal aufgerufen, wenn die Tastatur geschlossen wird

render() { 
    return (
     <View style={{flex:1, justifyContent:'center'}}> 
     <TextInput 
      style={{alignSelf:'stretch'}} 
      onChangeText={(searchInput) => this.setState({ searchInput }) } 
      placeholder='Search' 
      returnKeyType='search' 
      onFocus={() => console.log('onFocus')} 
      onBlur={() => console.log('onBlur')} 
      onChange={(event) => console.log('onChange text: ' + event.nativeEvent.text)} 
      onEndEditing={(event) => console.log('onEndEditing text: ' + event.nativeEvent.text)} 
      onSubmitEditing={(event) => console.log('onSubmitEditing text: ' + event.nativeEvent.text)} 
     /> 
     </View> 
    ); 
    } 

Es geschieht nur in Android (onSubmitEditing wird einmal in iOS genannt). Auch onSubmitEditing wird einmal aufgerufen, wenn ich RN 0.24 verwende, aber es wird zweimal in der neuesten Version (0.30) aufgerufen. Ist das erwartetes Verhalten? Und gibt es eine Möglichkeit, den Text einmal zu nehmen, wenn die Tastatur durch Drücken der Suchtaste geschlossen wird?

+0

ich das gleiche Verhalten erlebe mit reagieren-native 0,30. Android API 22 –

+0

Wer sich für dieses Problem interessiert, könnte den aktuellen Status in [hier] sehen (https://github.com/facebook/react-native/issues/10443) –

Antwort

1

lösen dieses Problem durch die Verwendung textinput.blur

<TextInput 
    ref={component => this._textInput = component} 
    onSubmitEditing={this._onSubmitEditing.bind(this)} 
    onEndEditing={this._onPressSearch.bind(this)} 
    returnKeyType='search' 
    style={styles.inputText}/> 

    _onSubmitEditing(){ 
    this._textInput.blur(); 
    } 
    _onPressSearch(event){ 
    console.log(event.nativeEvent.text); 
    } 
Verwandte Themen