简体   繁体   English

IOS 向后滑动手势不执行 navigation.goBack()

[英]IOS Swipe Back gesture does not perfom navigation.goBack()

I have a drawer navigator with many child navigators.我有一个抽屉导航器,里面有很多儿童导航器。 On Android, both Header back arrow and navigation bar back button work and go back to previous screens.在 Android 上,标题后退箭头和导航栏后退按钮都可以工作并返回到之前的屏幕。 Eg, if I navigate to a bScreen1 through the drawer, both buttons get me back to the Home Screen of the App ie aScreen1例如,如果我通过抽屉导航到 bScreen1,两个按钮都会让我回到应用程序的主屏幕,即 aScreen1

On IOS, Header back arrow work fine, HOWEVER, swipe back gets me back to my login screen inside the AuthNavigator instead of aScreen1, which has 0 sens to me because it is outside the drawerNavigator, and at the same level inside the RootNavigator.在 IOS 上,标题后退箭头工作正常,但是,向后滑动会让我回到 AuthNavigator 内的登录屏幕,而不是 aScreen1,它对我来说是 0 感,因为它在 drawerNavigator 之外,并且在 RootNavigator 内处于同一级别。 The swipe back does not perform a navigation.goBack().向后滑动不会执行 navigation.goBack()。

I have already tried overriding the swipe behavior by adding a listener on 'beforeRemove' event and then calling navigation.goBack(), but the wrong screen still shows up for a instant before moving to the right one (previous one)我已经尝试通过在 'beforeRemove' 事件上添加一个侦听器然后调用 navigation.goBack() 来覆盖滑动行为,但是在移动到正确的屏幕(上一个)之前,错误的屏幕仍然显示一瞬间

...
import { createDrawerNavigator } from '@react-navigation/drawer'
import { createStackNavigator } from '@react-navigation/stack';

const DrawerNavigator = createDrawerNavigator();
const rootStack = createStackNavigator();

...
drawerNavigator() {
 return (
  <DrawerNavigator.Navigator>
    <DrawerNavigator.Screen component={aNavigator} />
    <DrawerNavigator.Screen component={bNavigator} />
    ...
    <DrawerNavigator.Screen component={zNavigator} />
  </DrawerNavigator.Navigator>
)}

aNavigator() {
return (
  <ANavigator.Navigator>
    <ANavigator.Screen component={aScreen1} />
    ...
    <ANavigator.Screen component={aScreen10} />
  </ANavigator.Navigator>
)}

aNavigator() {
return (
  <ANavigator.Navigator>
    <ANavigator.Screen component={bScreen1} />
    ...
    <ANavigator.Screen component={bScreen10} />
  </ANavigator.Navigator>
)}


 <rootStack.Navigator initialRouteName="AuthNavigator" screenOptions={{ headerShown: false }}>
       <rootStack.Screen name="AuthNavigator" component={createAuthNavigator} />
       <rootStack.Screen name="DrawerNavigator" component={drawerNavigator} />
</rootStack.Navigator>

Ps: I am using all the latest versions of navigation packages Ps:我使用的是所有最新版本的导航包

我在设置animationEnabled: false时遇到了同样的问题,如果将其设置为true ,则应该能够滑动以切换屏幕。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM