KeyboardAvoidingView с ScrollView

Я как бы новый, чтобы отреагировать на родной язык, и у меня есть один вопрос, который я не нашел в соответствующей документации.

Я рассматриваю этот компонент KeyboardAvoidingView: https://facebook.github.io/react-native/docs/keyboardavoidingview.html

Вопрос прост: кто-нибудь может заставить KeyboardAvoidingView работать с ScrollView? У меня много TextInputs в одном компоненте (сумма высоты TextInputs больше, чем высота устройства), и как только клавиатура появляется, у меня есть различные проблемы.
Если я использую View вместо ScrollView все будет хорошо, но я не могу его использовать, так как мне нужно больше места, чем высота устройства. Я ничего не могу найти о прокрутке в документации KeyboardAvoidingView.

Благодарю.

Ответ 1

Для тех, кто хочет решить эту проблему, это работает и автоматически прокручивает фокус ввода. Я попробовал это на выставке, надеюсь, это поможет.

<KeyboardAvoidingView style={{ flex: 1, flexDirection: 'column',justifyContent: 'center',}} behavior="padding" enabled   keyboardVerticalOffset={100}>
    <ScrollView>
        <View style={Styles.row}>
                //your view
        </View>
    </ScrollView>
</KeyboardAvoidingView>

Ответ 2

Похоже, Facebook еще не реализовал решение для scrollViews. Но я нашел решение, сделанное Wix, которое работает так, как должно :)

Ответ 3

Я также пытался найти решение в Интернете, но сам это понял. Я смог сделать keyboardAvoidingView для работы с ScrollView на симуляторе iPhone SE.

Я использовал position типа заполнения, с keyboardVerticalOffset установленной на некоторое более высокое значение. Надеюсь, это поможет всем, кто попал в эту ситуацию.

 render() {
    return (
    <View style={…..}>
        <ScrollView>
                <KeyboardAvoidingView style={{ flex: 1 }}
                keyboardVerticalOffset={100} behavior={"position"}>
                <TextInput style={styles.editInput} …./>

            </KeyboardAvoidingView>
        </ScrollView>
    </View>
)} 

Ответ 4

В моем случае я использовал:   https://github.com/APSL/react-native-keyboard-aware-scroll-view.

<KeyboardAwareScrollView>
  ....
  <MyContainerComponent>
    ....
    <MyFormComponentWithInputs />
  </MyContainerComponent>
</KeyboardAwareScrollView>

Он также поддерживает более старые версии RN.

Мой текстовый ввод был где-то глубоко скрыт, это какой-то пользовательский дочерний компонент ScrollView, но пакет отлично работал как для Android, так и для iOS

Ответ 5

Я столкнулся с той же проблемой, хотя у меня был другой подход, который в основном будет вычислять и позиционировать (используя translateY) представление при появлении клавиатуры.

Я опубликовал решение о gitub и NPM- реакции-native-spacer.