Quantcast
Viewing all articles
Browse latest Browse all 6403

How to have keyboardAvoidingView respond to clicking other button react native

I have a few textInputs in a keyboardAvoidingView which works fine when I click on one. But if I do not click outside the view and dismiss it but instead click on another textInput inside the view it ruins the styling on the keyboardAvoidingView.

Here is my code:

import React, {useState} from 'react';import {KeyboardAvoidingView, Platform, View} from "react-native";import {TextInput} from "react-native-paper";import {styles} from "./styles/BasicInfoStyles";import SignUpFooter from "../../../components/SignUpFooter";import SignUpHeader from "../../../components/SignUpHeader";import AgeButton from "./components/AgeButton";function BasicInfo() {    const {shell, ageAndGender, body} = styles;    const [firstname, setFirstname] = useState('');    // const [age, setAge] = useState('');    const [gender, setGender] = useState('');    const [sexualOrientation, setSexualOrientation] = useState('');    const [height, setHeight] = useState('');    const setButtonDisabled = () => {        if (!firstname || !sexualOrientation || !height) {            return true        }        return false    };    return (<View style={shell}><KeyboardAvoidingView style={{flex: 10}} behavior={Platform.OS === "ios" ? "padding" : "height"}><SignUpHeader title={`Enter a bit about\nyourself`} page={1}/><KeyboardAvoidingView style={body} behavior={Platform.OS === "ios" ? "padding" : "height"}><TextInput                        autoComplete                        mode="outlined"                        label="Firstname"                        value={firstname}                        onChangeText={firstname => setFirstname(firstname)}                        style={{maxHeight: 64, marginBottom: 32}}                        activeOutlineColor={"#000"}                        outlineColor={"#DBDBDB"}                        theme={{                            colors: {                                text: "#000",                                placeholder: "#878787",                                background: "#FFF"                            }                        }}                    /><View style={ageAndGender}><AgeButton /><TextInput                            autoComplete                            mode="outlined"                            label="Gender"                            value={gender}                            onChangeText={gender => setGender(gender)}                            style={{maxHeight: 64, minWidth: '47%'}}                            activeOutlineColor={"#000"}                            outlineColor={"#DBDBDB"}                            theme={{                                colors: {                                    text: "#000",                                    placeholder: "#878787",                                    background: "#FFF"                                }                            }}                        /></View><TextInput                        autoComplete                        mode="outlined"                        label="Sexual Orientation"                        value={sexualOrientation}                        onChangeText={sexualOrientation => setSexualOrientation(sexualOrientation)}                        style={{maxHeight: 64, marginBottom: 32}}                        activeOutlineColor={"#000"}                        outlineColor={"#DBDBDB"}                        theme={{                            colors: {                                text: "#000",                                placeholder: "#878787",                                background: "#FFF"                            }                        }}                    /><TextInput                        autoComplete                        mode="outlined"                        label="Height"                        value={height}                        onChangeText={height => setHeight(height)}                        style={{maxHeight: 64, marginBottom: 32}}                        activeOutlineColor={"#000"}                        outlineColor={"#DBDBDB"}                        theme={{                            colors: {                                text: "#000",                                placeholder: "#878787",                                background: "#FFF"                            }                        }}                    /></KeyboardAvoidingView></KeyboardAvoidingView><SignUpFooter                buttonTitle="Next"                disabled={setButtonDisabled()}                route="BasicInfo"                title={`Basic\nInfo`}            /></View>    );}export default BasicInfo;const styles = StyleSheet.create({    shell: {        flex: 1,        marginRight: 32,        marginLeft: 32,    },    ageAndGender: {        flexDirection: 'row',        flexWrap: 'wrap',        justifyContent: "space-between",        alignItems: "center",        marginBottom: 32,    },    body: {        flex: 6,        marginBottom: 128    }})

And here is an image example of what I mean:

Image may be NSFW.
Clik here to view.
enter image description here
Here the view works fine

Image may be NSFW.
Clik here to view.
enter image description here
Here the view doesnt

Any help as to why it does not work or to rerender the view onPress of another component would be great - thanks!


Viewing all articles
Browse latest Browse all 6403

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>