IOS 滑动返回手势不执行navigation.goBack()

问题描述 投票:0回答:2

我有一个抽屉导航器和许多子导航器。 在 Android 上,标题后退箭头和导航栏后退按钮都可以工作并返回到之前的屏幕。 例如,如果我通过抽屉导航到 bScreen1,两个按钮都会让我返回应用程序的主屏幕,即 aScreen1

在 IOS 上,标题后退箭头工作正常,但是,向后滑动可以让我回到 AuthNavigator 内的登录屏幕,而不是 aScreen1,aScreen1 对我来说有 0 sens,因为它位于抽屉导航器之外,并且在 RootNavigator 内处于同一级别。向后滑动不会执行 navigation.goBack()。

我已经尝试通过在“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>
)}

bNavigator() {
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:我使用的是所有最新版本的导航包

react-native react-navigation react-navigation-drawer react-navigation-v6
2个回答
0
投票

我在设置

animationEnabled: false
时遇到了同样的问题,如果你将其设置为
true
,你应该可以滑动来切换屏幕。


0
投票

我的问题是返回动画在 iOS 上不起作用。将react-native-gesture-handler包从1.6.1更新到1.8.0解决了这个问题

© www.soinside.com 2019 - 2024. All rights reserved.