在Xamarin.Forms中单击背景时,Rg.Plugins.Popup没有关闭

时间:2017-12-27 14:05:07

标签: xamarin.forms xamarin.ios xamarin.android

我在我的应用程序中使用了rg.plugins.popup。我更新了xamarin表单(版本=" 2.5.0.121934")。现在点击外部背景它没有关闭。我曾经多次关闭弹出窗口,但没有关闭,我尝试了下面的代码:

  

this.CloseWhenBackgroundIsClicked = false;

protected override bool OnBackgroundClicked()
        {
            Navigation.PopPopupAsync();
            return false;
        }   

OnBackgroundClicked没有打电话。如何解决这个问题?

4 个答案:

答案 0 :(得分:3)

我不明白您是否知道正确的代码是:this.CloseWhenBackgroundIsClicked = true;(不是假的),但如果这不起作用,您可以尝试解决方法直到此问题得到解决。

基本上,添加一个Grid作为PopupPage的根,并添加一个带有TapGestureRecognizer的Colorless BoxView作为Grid的子项,然后只将实际内容添加为Grid的另一个子项,并将TapGestureRecognizer设置为“BackgroundClicked”代码。

希望它有所帮助!

答案 1 :(得分:0)

我遇到了同样的问题,就我而言,这是关于不了解此插件的工作原理。 第一次使用弹出窗口时,我使用this.CloseWhenBackgroundIsClicked = true在屏幕中央放置了一个StackLayout,并且效果很好,问题是当我将GridLayout放置为10 *,80 *,10 *列和10 *行时,80 *,10 *。我的内容在grid.rows(1),grid.columns(1)中。其他的行和列只是边界。 如果单击边框,将无法正常工作,因为我触摸的是网格边,而不是实际的背景。 解决方案是将Grid更改为stacklayout并将其居中。

答案 2 :(得分:0)

首先,我将所有StackLayout放入ScrollView中,但遇到了同样的问题。然后,我删除了ScrollView,它起作用了。

答案 3 :(得分:0)

也许答案有点晚。但我认为有人会需要它。 您应该覆盖MainActivity的后退按钮。

//将此添加到Android MainActivity内

   public async override void OnBackPressed()
        {
            if (Rg.Plugins.Popup.Popup.SendBackPressed(base.OnBackPressed))
            {
                await PopupNavigation.Instance.PopAsync();
            }
            else
            {
                // Do something if there are not any pages in the `PopupStack`
            }
        }