Xamarin表格-重复的屏幕

时间:2018-11-23 14:51:24

标签: xamarin.forms

我正在使用Xamarin Forms编写应用程序,但遇到一个问题,我希望有人可以提供帮助。

我的应用程序包含一个屏幕,其中包含多个可以按下的图标,然后将打开一个新屏幕。

我的问题是,如果您两次快速按下图标,该应用程序将打开同一屏幕的2个实例(这不仅与双击有关,如果非常快速地按下图标6次,它将打开6个实例)重复的屏幕)。按下“后退”按钮,关闭顶部屏幕以显示下面的重复屏幕。再按一次“后退”按钮,将您导航回到原始屏幕。

该问题似乎出现在我的应用程序的任何屏幕上,因此我希望其他人会遇到此问题,并且知道可以防止显示重复屏幕的解决方案。

3 个答案:

答案 0 :(得分:0)

这是TapEvents中的一个已知问题。

在代码背后,我的hack拥有一个布尔变量_canTap

在您调用的用于推送新页面的方法中,首先检查是否canTap,然后将其设置为false,并且仅在导航到另一页面之后才将其设置为true。这样,所有水龙头都将被忽略。

示例:

 private bool _canTap = true;


public void YourMethod()
{
    if(_canTap)
    {
         _canTap = false;
         YourMethodToNavigate();
         _canTap = true;
    }
 }

答案 1 :(得分:0)

在Icon_Pressed方法中添加它,

visit

它将禁用页面,直到当前按下图标的事件结束

答案 2 :(得分:0)

这是Xamarin应用程序的已知问题。我使用了结合try-finally模式的私有变量来解决这个问题。例如:

bool allowTap = true;

public void ButtonTapped()
{
    try
    {
        if(allowTap)
        {
            allowTap = false;
            // Do whatever...
        }
    }
    finally
    {
        allowTap = true;
    }
}

finally确保在发生完全崩溃之前,无论发生什么情况,allowTap都设置为true。请注意,如果需要,您还可以在catchtry块之间使用finally块来捕获所有错误。