Я хочу установить flex: 0
, когда клавиатура открыта, и flex: 1
, когда клавиатура скрыта. Чтобы избежать пробелов при открытой клавиатуре.
Но знайте, что макет мерцает при открытии клавиатуры.
keyboardWillShow
доступно только на ios.
Как мне добиться это?
Вот что происходит:

Я хочу удалить нижнее пространство кнопки входа в систему, когда клавиатура открыта.
Это код:
useEffect(() => {
Keyboard.addListener("keyboardDidShow", _keyboardDidShow);
Keyboard.addListener("keyboardDidHide", _keyboardDidHide);
return () => {
Keyboard.removeListener("keyboardDidShow", _keyboardDidShow);
Keyboard.removeListener("keyboardDidHide", _keyboardDidHide);
};
}, []);
const _keyboardDidShow = () => {
setKeyboardIsOpen(true);
};
const _keyboardDidHide = () => {
setKeyboardIsOpen(false);
};
return
<ScreenContainer bgColor={Colors.whiteFFF} scrollView>
<View style={{ flex: 1, justifyContent: "space-between" }}>
<View style={{ flex: 1, justifyContent: "center" }}>
<TForm
fields={fields}
values={values}
errors={errors}
onChangeText={(val, name) => setValues({ ...values, [name]: val })}
onError={errors => setErrors(errors)}
/>
<ForgetPassword />
</View>
<View style={{ flex: keyboardIsOpen ? 0 : 1, justifyContent: "center" }}>
<AuthButton text={Strings.btns.login} onPress={login} />
</View>
</View>
</ScreenContainer>
Я пробовал использовать прослушиватель событий клавиатуры, но установить justifyContent
- flex-end
, но это мерцает.