当用户使用Xamarin Forms在iOS上向后滑动时,禁用导航栏

时间:2019-02-25 12:00:15

标签: xamarin xamarin.forms

当前,我有一个类,使用户无法使用后退手势返回到iOS平台上的上一页,此代码有效,但是当用户执行后退手势时导航侧栏仍会出现,这是他们的禁用此功能的方法。

我当前的代码停止后退:

 using DisableSwipe.iOS;
 using Xamarin.Forms;
 using Xamarin.Forms.Platform.iOS;

 [assembly: ExportRenderer(typeof(ContentPage), 
 typeof(NoBackSwipeRenderer))]
 namespace DisableSwipe.iOS
{
public class NoBackSwipeRenderer : PageRenderer
{
    public override void ViewWillAppear(bool animated)
    {
        base.ViewWillAppear(animated);

        if (ViewController != null && ViewController.NavigationController != null)
            ViewController.NavigationController.InteractivePopGestureRecognizer.Enabled = false;



    }
}
}

2 个答案:

答案 0 :(得分:1)

您需要像这样在MasterDetailPage的Xaml代码中设置IsGestureEnabled="false"

<?xml version="1.0" encoding="utf-8"?>
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms" 
                  xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
                  xmlns:views="clr-namespace:Sample.Views" 
                  x:Class="Sample.Views.MainPage"
                  IsGestureEnabled="false">
    <MasterDetailPage.Master>
        <views:MenuPage />
    </MasterDetailPage.Master>
    <MasterDetailPage.Detail>
        <NavigationPage>
            <x:Arguments>
                <views:ItemsPage />
            </x:Arguments>
        </NavigationPage>
    </MasterDetailPage.Detail>
</MasterDetailPage>

答案 1 :(得分:0)

要禁用MasterDetail视图上的滑动手势,您只需使用IsGestureEnabled属性。参见:https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.masterdetailpage.isgestureenabled?view=xamarin-forms