Клавиатура, избегающая просмотра, неправильно работает с модальным

#react-native #keyboard-events

Вопрос:

Мой список ввода текста довольно длинный, и мне нужно поместить их на одну страницу внутри модального.

Дело в том, что всякий раз, когда всплывает клавиатура. Первый элемент и заголовок модального всегда невидимы из поля зрения.

вот код

 return (
    <Modal
  transparent={true}
  animationType={'slide'}
  visible={visibility}
  onRequestClose={() => {
    console.log('close modal');
  }}>
  <KeyboardAvoidingView
    behavior={Platform.OS === 'ios' ? 'padding' : 'height'}
    style={{flex: 1}}
    enabled>
    <View style={styles.modalBackground}>
      <View style={styles.activityIndicatorWrapper}>
        <ScrollView showsVerticalScrollIndicator={false}>
          <View style={styles.headerContainer}>
            <Text
              style={[
                styles.activityText,
                globalStyle.mediumText,
                globalStyle.boldedFont,
              ]}>
              {title}
            </Text>
            <TouchableOpacity
              style={styles.crossPosition}
              onPress={() => setVisibilty(false)}>
              <Cross />
            </TouchableOpacity>
          </View>

          <Formik
            validateOnMount={true}
            validationSchema={contactDetailsSchema}
            initialValues={{
              firstName: '',
              lastName: '',
              email: '',
              mobile: '',
              address: '',
              city: '',
              state: '',
              zipCode: '',
              country: '',
            }}
            onSubmit={values => handleAddress(values)}>
            {({
              handleChange,
              handleBlur,
              handleSubmit,
              errors,
              touched,
              values,
              isValid,
            }) => (
              <>
                <TextInput
                  name="firstName"
                  placeholderTextColor={unSettleGrey}
                  style={styles.textInput}
                  numberOfLines={1}
                  placeholder="First Name"
                  keyboardType="default"
                  onChangeText={handleChange('firstName')}
                  // onBlur={handleBlur('firstName')}
                  // value={values.firstName}
                  autoCapitalize="none"
                  selectionColor="white"
                />
                                     <TextInput
                  name="firstName"
                  placeholderTextColor={unSettleGrey}
                  style={styles.textInput}
                  numberOfLines={1}
                  placeholder="First Name"
                  keyboardType="default"
                  onChangeText={handleChange('firstName')}
                  // onBlur={handleBlur('firstName')}
                  // value={values.firstName}
                  autoCapitalize="none"
                  selectionColor="white"
                />
                                     <TextInput
                  name="firstName"
                  placeholderTextColor={unSettleGrey}
                  style={styles.textInput}
                  numberOfLines={1}
                  placeholder="First Name"
                  keyboardType="default"
                  onChangeText={handleChange('firstName')}
                  // onBlur={handleBlur('firstName')}
                  // value={values.firstName}
                  autoCapitalize="none"
                  selectionColor="white"
                />
                </>
            )}
          </Formik>
        </ScrollView>
      </View>
    </View>
  </KeyboardAvoidingView>
</Modal>
  );
};

export default ProductDeliveryPopUp;

const styles = EStyleSheet.create({
  modalBackground: {
    flex: 1,
    alignItems: 'center',
    flexDirection: 'column',
    justifyContent: 'flex-end',
    backgroundColor: '#00000040',
  },
  activityIndicatorWrapper: {
    backgroundColor: '$whiteColor',
    borderRadius: 10,
    display: 'flex',
    paddingHorizontal: 16,
    width: windowWidth,
    height: windowHeight - 100,
    paddingTop: 12,
  },
  headerContainer: {
    height: 60,
    alignItems: 'center',
    justifyContent: 'center',
  },
  crossPosition: {position: 'absolute', right: 20, top: 22},
  textInputContainer: {marginVertical: 12},
  textInput: {
    width: windowWidth - 32,
    paddingVertical: 12,
    paddingHorizontal: 12,
    borderWidth: 1,
    borderColor: 'grey',
    borderRadius: 4,
    marginTop: 12,
    color: 'black',
  },
  textDescription: {
    height: 100,
    textAlignVertical: 'top',
  },
  checkboxContainer: {
    marginVertical: 12,
    flexDirection: 'row',
    alignItems: 'center',
  },
  checkboxText: {marginLeft: 12},
  dropDownButtonStyle: {
    backgroundColor: 'white',
    borderWidth: 1,
    borderColor: 'grey',
    borderRadius: 8,
    height: 35,
    marginTop: 20,
  },
  dropDownButtonText: {textAlign: 'left'},
  dropDownRows: {
    backgroundColor: 'white',
    borderColor: 'white',
    borderWidth: 0,
    marginBottom: -1,
  },
  pageEndContainer: {marginLeft: 37, marginBottom: 12},
  bottomPageMargin: {marginBottom: 50},
  errorText: {
    color: 'red',
    marginTop: 4,
  },
});
 

Вот как они это показывают. Я загрузил две фотографии, чтобы вы, ребята, могли их хорошо видеть.
В симуляторе iOS пользователь может прокручивать страницу, но в симуляторе Android пользователь не может прокручивать, когда всплывает клавиатура. Таким образом, эта проблема существует только на устройствах Android

Без отображения клавиатуры

С отображением клавиатуры