我目前在我的应用程序中使用标准导航方法而不是Shell导航。我打算将iOS向后滑动导航纳入其中,希望它在默认情况下发挥作用。然而,它并没有像预期的那样工作。我遇到了一些讨论这个问题的线程,例如:
https://learn.microsoft.com/en-us/answers/questions/1143556/how-to-disable-the-swipe-back-in-ios-using-net-mau?sort=votes
我试图在下面的页面上使用此代码来启用向后滑动导航,但不幸的是,它没有按预期运行:
所以我现在的导航流程是这样的:
MainPage = new NavigationPage(new Page1());
字符串
来自第1页:
async void Button_Clicked(System.Object sender, System.EventArgs e)
{
await Navigation.PushAsync(new Page2());
}
型
On Page2's OnAppearing():
protected override void OnAppearing()
{
base.OnAppearing();
#if IOS
UINavigationController vc = (UINavigationController)Platform.GetCurrentUIViewController();//using UIKit, find the UINavigationController
vc.InteractivePopGestureRecognizer.Enabled = true;
#endif
}
型
**更新:**如果我将Page2的HasNavigationBar
属性设置为False
,就会发生这种情况
NavigationPage.HasNavigationBar="False"
型
1条答案
按热度按时间brjng4g31#
更新:
如果没有更好的解决方案,您可以尝试此变通方法。
对于Page2.xaml.cs文件
在OnAppearing方法中,对Navigationbar进行一些更改
字符串
在OnDisappearing方法中,只需将其设置回,
型
通过这种方式,回扫手势将不会被禁用,并且页面顶部没有空间。
正如@Himanshu Dwivedi所说,删除NavigationBar会禁用向后滑动手势。
不使用
NavigationPage.HasNavigationBar="False"
,而是使用型
回刷是iOS默认的行为,您不需要在OnAppearing方法中设置以下代码,
型
但我相信这可能与模拟器或XCode的一些设置有关。请确保选择
Show Device Bezels
选项。注意:如果您使用pair to mac,它可能无法工作。这可能是由于pair to mac的限制。但如果您在mac上使用模拟器,它应该可以工作。
x1c 0d1x的数据
另一种方法是,您可以将其部署到物理设备iPhone上,以检查滑动返回导航是否有效。