Erstellen eines mehrzeiligen TextInput mit React-Native
Arbeite ich an einem reagieren native app und brauchen eine TextInput-Komponente mit ähnlicher Funktionalität wie die textview in der "Nachrichten" - app auf iOS—es sollte zunächst als eine Zeile und dann elegant zu erweitern, um mehr Zeilen, bis etwas einzugrenzen (wie 5 Zeilen text) und dann starten, scrollen entlang, um die Letzte Zeile wie nötig.
Warf einen Blick auf die SlackTextViewController
aber a) scheint, wie es eine Menge Sachen, die ich nicht will und b) ich möchte versuchen, so viel code in Reagieren (und aus objective-C/swift) wie möglich.
Edit: möchte Nur betonen, dass ich lieber REAGIEREN (JAVASCRIPT -) code, wie oben angegeben, statt in Objective-C oder Swift.
InformationsquelleAutor der Frage Aaron Yodaiken | 2015-07-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich versucht, zwei verschiedene Möglichkeiten, dies zu tun heute. Weder sind die beste, aber ich dachte, ich würde aufzeichnen, meine Bemühungen, falls Sie hilfreich sind. Sie beide auf jeden Fall hatte die Wirkung, die Sie suchen, aber irgendwann verzögert mit allen asynchronen Kommunikation.
1) Offscreen Text Höhe
Also nur unter der TextInput Hinzugefügt habe ich einen normalen Text-Feld mit dem gleichen font und padding und so. Ich habe mich registriert, die
onChange
Hörer am Eingang und riefsetState({text: event.nativeEvent.text})
. Der Text eingereicht, hat seinen Wert aus dem Zustand. Beide hattenonLayout
Zuhörer. Im Grunde, war das Ziel, um die Höhe für die TextInput-von der (uneingeschränkten) Text. Dann versteckte ich den Text Weg offscreenhttps://gist.github.com/bleonard/f7d748e89ad2a485ec34
2) Native Modul
Wirklich, ich brauchte nur die Höhe des Inhalts in der real UITextView. Also ich habe eine Kategorie aus, um RCTUIManager, da es mehrere Methoden gibt es bereits, die hilfreich sind. Ich entledigte sich die verborgenen Text anzeigen. So
onChange
Frage ich nach der Höhe und Verwendung, in gleicher Weise über den Staat.https://gist.github.com/bleonard/6770fbfe0394a34c864b
3) Github PR
Was ich wirklich hoffe ist, dass diese PR wird akzeptiert. Es sieht, so etwas zu tun automatisch.
https://github.com/facebook/react-native/pull/1229
InformationsquelleAutor der Antwort bleonard
Hinzufügen
multiline={true}
zu einer TextInput ermöglichen scrollen, wenn die Textmenge größer ist als der verfügbare Platz. Sie können dann ändern Sie die Höhe der TextInput-durch den Zugriff auf die nativeEvent.contentSize.Höhe der Veranstaltung von der onChange-prop.InformationsquelleAutor der Antwort Groovietunes
Umsetzung der
UITextView
's delegate-MethodetextViewDidChange
und spielen Sie mit dem rect -InformationsquelleAutor der Antwort Inder Kumar Rathore
Ab Okt'17 es ist eine schöne Komponente von Wix, um dies zu tun:
https://github.com/wix/react-native-autogrow-textinput
Die Nutzung sehr einfach:
Und es gibt einige zusätzliche Requisiten wie
minHeight
undmaxHeight
zum Beispiel.Ich verwende es auf RN 0.47.2
InformationsquelleAutor der Antwort zubko