Mam FlatList wewnątrz widoku KeyboardAvoidingView. Kiedy wyświetla się klawiatura, chciałbym przewinąć do końca FlatList.Przewiń do końca FlatList po wyświetleniu klawiatury
Słucham zdarzenia "keyboardDidShow", które zostanie wyrzucone, ale może zostać wyrzucone zbyt wcześnie, ponieważ FlatList nie jest przewijany do końca po wywołaniu scrollToEnd.
Zajrzałem do zdarzenia OnLayout z KeyboardAvoidingView, jednak samo ustawienie zdarzenia onLayout w celu wyzwolenia funkcji wydaje się uniemożliwiać KeyboardAvoidingView zmianę jego rozmiaru po wyświetleniu klawiatury.
<KeyboardAvoidingView behavior='padding' style={{ flex: 1}} onLayout={this._scrollEnd}>
Kod:
import React from 'react';
import {Image, Linking, Platform, ScrollView, StyleSheet, Text, TouchableOpacity, View, Button, Alert, FlatList, TextInput, KeyboardAvoidingView, Keyboard} from 'react-native';
import { MonoText } from '../components/StyledText';
export default class HomeScreen extends React.Component {
constructor() {
super();
this.state = {
messages: getMessages()
};
this.keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', this._scrollEnd);
this.keyboardDidShowListener = Keyboard.addListener('keyboardDidHide', this._scrollEnd);
}
_scrollEnd = (evt) => {
this.refs.flatList1.scrollToEnd();
}
render() {
return (
<KeyboardAvoidingView behavior='padding' style={{ flex: 1}} >
<FlatList
style={{ flex:1}}
ref="flatList1"
data={this.state.messages}
renderItem={({ item }) => <Text>{item.text}</Text>}
/>
</KeyboardAvoidingView>
);
}
}
Czy próbowałeś dodać również propozycję 'getItemLayout'? Wygląda na to, że to naprawia: http://facebook.github.io/react-native/releases/0.44/docs/flatlist.html#getitemlayout. Czy wysokość przedmiotów nie jest statyczna? – Cherniv
w której platformie jesteś? wygrać, os, lin? –
Ten kod działa na moim komputerze. Czy możesz dokładniej wyjaśnić, co się dzieje? Zwój nigdy się nie dzieje? Czy może treść jest wycięta? – whitep4nther