2017-01-16 18 views
8

onContentSizeChange nie wydaje się poprawnie uruchamiać na Androidzie. Wydarzenie jest uruchamiane pod numerem mount, ale nie jest wywoływane przy zmianie text height. Kod identyczny działa dobrze dla iOS:Funkcja onContentSizeChange nie uruchamia się na zmianie wysokości w systemie Android (reaguje natywnie)

<TextInput 
    editable = {true} 
    multiline = {true} 
    [...] 
    onContentSizeChange={(event) => { 
    this.setState({height: event.nativeEvent.contentSize.height}); 
    }} 
    style={{height: Math.max(35, this.state.height)}} 
/> 
+1

Jaka wersja React Native używasz? Działa to dla mnie w wersji 0.46. –

Odpowiedz

7

https://github.com/facebook/react-native/issues/6552#issuecomment-269989962

W Androidzie onContentSizeChange jest wywoływana tylko raz użycie onChange zamiast onContentSizeChange.

Kod

<TextInput 
    editable = {true} 
    multiline = {true} 
    [...] 
    onChange={(event) => { 
    this.setState({height: event.nativeEvent.contentSize.height}); 
    }} 
    style={{height: Math.max(35, this.state.height)}} 
/> 
+1

To już nie jest dobre rozwiązanie, jest przestarzałe: https://github.com/facebook/react-native/commit/bac84ce207a0466cec95626131063751eb48b964 –

0

Ustawianie value po każdej zmianie rozwiązaniu problemu dla mnie

<TextInput 
    multiline={true} 
    onChangeText={(text) => { 
    this.setState({text}); 
    }} 
    onContentSizeChange={(event) => { 
    this.setState({height: event.nativeEvent.contentSize.height}); 
    }} 
    style={{height: this.state.height}} 
    value={this.state.text} 
/>