Почему клавиатура android запускает мою навигацию назад - PullRequest
0 голосов
/ 04 мая 2020

Хорошо, люди, это проблема. Когда я нажимаю ввод android для вставки текста и появляется клавиатура, мой экран возвращается назад. Это происходит только на Android. Это происходит с каждым вводом, и если я запускаю экран с открытой клавиатурой и закрываю его, появляется та же проблема. Я знаю, что не работаю с последней версией реактивной системы или библиотек.

Вот мое окружение и пакет. json.

"react-native": "0.61.3"
"@react-native-community/datetimepicker": "^2.2.2",
"@react-native-community/masked-view": "^0.1.5",
"@react-navigation/bottom-tabs": "^5.0.0-alpha.34",
"@react-navigation/core": "^5.0.0-alpha.32",
"@react-navigation/drawer": "^5.0.0-alpha.36",
"@react-navigation/material-bottom-tabs": "^5.0.0-alpha.31",
"@react-navigation/material-top-tabs": "^5.0.0-alpha.30",
"@react-navigation/native": "^5.0.0-alpha.24",
"@react-navigation/stack": "^5.0.0-alpha.58",

Среда

SO: Ubuntu 20.04 LTS (Also tried on OSX)
node: 14.1.0
API Android: 28
npm:6.14.4

И приложение выглядит примерно так. (Не совсем код, я только что присоединился к этому проекту, и код - такая боль в заднице.)

//App.js
<Tab.Navigator
  initialRouteName={'HOME'}
  tabBarOptions={{
  activeTintColor: 'white',
  style: {backgroundColor: 'black'},
}}>
  <Tab.Screen
    name="Account"
    component={props => <ProfileTab {...props} />}

  >
  </Tab.Screen>
</Tab.Navigator>


//ProfileTab.js

<Stack.Navigator
  mode="modal"
  headerMode="none"
  initialRouteName="SessionFilter"
>
  <Stack.Screen
    component={props => (
     <Login
       close={() => {
        if (!currentUser) navigation.navigate('SessionFilter');
         navigation.goBack();
        }}
       sendToRegister={() => {
        navigation.goBack();
        navigation.navigate('Registry');
       }}
     />
   )}
   name="Login"
 />
</Stack.Navigator>


//Login.js

return (
    <SafeAreaView style={{ flex: 1, backgroundColor: "white" }}>
      <ScrollView
        contentContainerStyle={{
          backgroundColor: "white",
          paddingHorizontal: 15,
          minWidth: 350,
          alignItems: "center",
          flex: 1,
          minHeight: Dimensions.get("window").height + 30,
        }}
      >
        <TextField>
      </ScrollView>
    </SafeAreaView>
  );
};

//TextField.js
import React from 'react';
import { TextField } from 'react-native-material-textfield';

export const TextField = (props) => (
    <TextField
        {...props}
        tintColor="black"
        textColor="black"
        fontSize={12}
        autoCapitalize="none"
        onChangeText={text => props.onChange({ target: { value: text } })}
        titleTextStyle={{ fontSize: 10 }}
        contentInset={{ label: 0 }}
        secureTextEntry={props.type && props.type === "password"}
    />
);

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

...