2016-08-08 12 views
1

Ich habe Probleme mit den TextInput- Modul für React-indiaiOS TextInput- Höhe relativ zur Schriftgröße reagieren-native

https://facebook.github.io/react-native/docs/textinput.html

Auf Android ist es schön und einfach ist, erstellen Sie die TextInput- geben eine Schriftgröße und legt die Höhe des TextInput-Steuerelements entsprechend fest.

Auf der anderen Seite, mit iOS, es sei denn Sie eine explizite Höhe für die TextInput- im Stil wird es schaffen 0.

Diese normalerweise in Ordnung wäre, sondern weil ich in meiner app variable Schriftgrößen verwenden. Ich brauche die TextInput-Höhe, um die Schriftgröße anzupassen.

Ich habe versucht, die Texteingabehöhe auf den gleichen Wert wie die Schriftgröße einzustellen. Das hat nicht richtig funktioniert und ich glaube nicht, dass die beiden relativ sind.

Ich habe einige mehrzeilige Texteingaben und möchte die Höhe berechnen, die ich für sie basierend auf der Höhe für eine einzelne Zeile möchte.

Pseudocode

lineHeight = getHeightForFontSize(15); 
multiLineHeight = lineHeight * 4; // 4 lines 

Also zusammenfassend. Wie erhalte ich die Höhe für eine TextInput-Ansicht basierend auf der Schriftgröße (im Voraus bekannt).

Antwort

1

Sie können onContentSizeChange verwenden, um die Schrifthöhe auf mehrzeiliger Textinput zu erhalten. Ich benutze dies, um die Höhe des Textinputs zu ändern, nachdem ich zu lange Texte erhalten habe. Aber stellen Sie sicher, dass Sie mehrzeiliges TextInput verwenden. Andernfalls wird es nicht funktionieren.

<TextInput 
    style={{height: this.state.height, borderColor: 'gray', borderWidth: 1}} 
    onChangeText={::this.onMessageChange} 
    value={this.props.message} 
    multiline 
    onContentSizeChange={({ nativeEvent: { contentSize: { width: txtWidth, height: txtHeight } } }) => { 
    if (txtHeight > 40) { 
     this.setState({ 
     height: txtHeight, 
     }); 
    } 
    }} 
/> 
+0

Danke für die Antwort, das könnte eine Ausweichlösung sein. Ich möchte, dass der textInput 4 Zeilen lang ist, bevor er Text enthält (außer für den Platzhaltertext). In Storyboards für ios-xcode. Dies entspricht der Einstellung der Anzahl der Zeilen auf 4. Gleiches gilt für eine einzelne Zeile TextInput. Die Eingabe muss in der Lage sein, sich basierend auf der Schriftgröße ohne vorhandenen Text zu skalieren. –

+0

Eigentlich funktioniert es auch bei der Montagezeit. Dadurch erhalten Sie am Anfang eine native Inhaltsgröße, und Sie können diese Höhe für Ihre Eingabe festlegen. @MarkSilver –

+0

Großartig werde ich es versuchen –