我正在使用Xamarin Forms编写应用程序,但遇到一个问题,我希望有人可以提供帮助。
我的应用程序包含一个屏幕,其中包含多个可以按下的图标,然后将打开一个新屏幕。
我的问题是,如果您两次快速按下图标,该应用程序将打开同一屏幕的2个实例(这不仅与双击有关,如果非常快速地按下图标6次,它将打开6个实例)重复的屏幕)。按下“后退”按钮,关闭顶部屏幕以显示下面的重复屏幕。再按一次“后退”按钮,将您导航回到原始屏幕。
该问题似乎出现在我的应用程序的任何屏幕上,因此我希望其他人会遇到此问题,并且知道可以防止显示重复屏幕的解决方案。
答案 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。请注意,如果需要,您还可以在catch
和try
块之间使用finally
块来捕获所有错误。