如何启用滑动手势当Xamarin.Forms中的NavigationBar被设为hidden的时候

Background

最近做到一个case,是帮助客户解决如下问题:

当使用Xamarin.Forms来开发iOS的手机应用时,如果设置当前应用没有NavigationBar,那么iOS的手势返回也会失效。具体的设置NavigationBar的代码如下:

1
NavigationPage.SetHasNavigationBar(this, false);

Solution

在iOS原生态的代码中,是call如下的代码来保证Swipe的手势始终可以用。

1
[self.navigationController.interactivePopGestureRecognizer setDelegate:nil];

由于这个一看就是platform-specific的代码,所以在XF中的解决方案也非常直观,就是重写iOS相关的PageRenderer:

1
2
3
4
5
6
7
8
9
public class BaseCoreRenderer: PageRenderer
{
public override void ViewWillAppear(bool animated)
{
base.ViewDidAppear(animated);
ViewController.NavigationController.InteractivePopGestureRecognizer.Enabled = true;
ViewController.NavigationController.InteractivePopGestureRecognizer.Delegate = new UIGestureRecognizerDelegate();
}
}

测试下来客户表示成功帮助解决问题。

介绍如何调试Xamarin.Android的binding项目
You need to set install_url to use ShareThis. Please set it in _config.yml.

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×