2016-05-24 19 views
7

Ich habe eine TextInput mit Multilinie auf True festgelegt. ich mit an den Eingang Fokus verschiebe:React Native: Wie mehrzeilige Texteingabe über der Tastatur sichtbar zu halten

scrollResponder.scrollResponderScrollNativeHandleToKeyboard(
    React.findNodeHandle(this.refs.myInput), 
    0, 
    true 
); 

jedoch, wenn der mehrzeilige TextInput- der Text unterhalb der Tastatur versteckt wird erweitert. Ich möchte nur scrollen, wenn der Cursor/der aktuelle Text nicht sichtbar ist. Ich kann also nicht einfach den obigen Code bei der Textänderung ausführen, da dies die Ansicht scrollen würde, selbst wenn der aktuelle Cursor/aktuelle Text sichtbar ist (wie die Bearbeitung in der ersten Zeile).

Gibt es eine Möglichkeit, den Cursor/aktuelle Textposition auf dem Bildschirm zu erhalten? Oder gibt es eine andere Möglichkeit zu tun, was ich versuche?

Derzeit:

enter image description here

Was ich versuche zu erreichen: enter image description here

Antwort

2

Sie können die onLayout Methode verwenden, um die Ansicht zur Verfügung gestellt (die Text erstreckt). Es gibt die Dimensionen der Ansicht zurück, mit der Sie die Bildlaufposition Ihrer Bildlaufansicht neu berechnen können.

+0

Es scheint nicht aufgerufen zu werden, wenn Text zum TextInput hinzugefügt wird –

0

Der beste Weg, es zu tun scheint mit der reagieren-native-Tastatur-aware-Scroll-View-Bibliothek und die Methode _scrollToInput und folgen, was die docs sagen zu sein.

enter image description here

Das einzige, was ich hatte, war zu ändern "this.scroll.props.scrollToFocusedInput (reactNode)" statt "this.scroll.scrollToFocusedInput (reactNode)" in der Dokumentation zu nennen!