2016-05-24 16 views
7

Mam TextInput z multiline ustawiony na true. jestem przewijanie do wejścia na fokus z:React Native: Jak zachować wielowierszowy textinput widoczny powyżej klawiatury

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

Jednak gdy multiline TextInput rozszerza tekst zostanie ukryty pod klawiaturą. Chcę przewinąć w dół, gdy kursor/bieżący tekst nie jest widoczny. Tak więc nie mogę po prostu uruchomić powyższego kodu podczas zmiany tekstu, ponieważ przewijał on widok, nawet jeśli obecny kursor/bieżący tekst jest widoczny (jak edycja w pierwszym wierszu).

Czy jest jakiś sposób, aby ustawić kursor/aktualną pozycję tekstu na ekranie? Czy istnieje inny sposób robienia tego, co próbuję?

Aktualnie

enter image description here

Co usiłuję osiągnąć: enter image description here

Odpowiedz

2

Można użyć metody onLayout, dostarczanego przez widok, który rozciąga się (Tekst). Zwraca wymiary widoku, za pomocą którego można ponownie obliczyć pozycję przewijania.

+0

Wygląda na to, że nie jest wywoływany po dodaniu tekstu do interfejsu TextInput –

0

Najlepszym sposobem, aby to zrobić wydaje się być z biblioteką reagować-native Klawiatura-aware-scroll-view i stosujemy metodę _scrollToInput i obserwuj to co docs powiedzieć.

enter image description here

Jedyną rzeczą I musiał zmienić było nazwać "this.scroll.props.scrollToFocusedInput (reactNode)" zamiast "this.scroll.scrollToFocusedInput (reactNode)" w docs!

Powiązane problemy