【问题标题】:Xamarin Forms - limiting TapGestureRecognizer to a single tapXamarin Forms - 将 TapGestureRecognizer 限制为单击一次
【发布时间】:2020-01-15 11:21:08
【问题描述】:

我在标签上有一个 TapGestureRecognizer。一切都适用于以下命令处理程序(使用导航到下一页的 FreshMVVM PushPageModel)...

    public Command OpenDailyEntry
    {
        get
        {
            return new Command(async (e) =>
            {
                await CoreMethods.PushPageModel<DailyEntryPageModel>(null);
            });
        }
    }

问题是下一个屏幕需要一秒钟左右的时间才能出现,在此之前,用户可以点击多次,导致事件多次触发。在 Android 上,这会导致每次用户点击标签时都会打开同一个页面。

有没有办法在第一次点击后禁用命令的全局标志来防止这种情况?

【问题讨论】:

    标签: xamarin.forms


    【解决方案1】:

    您可以为 Command 的 CanExecute 方法添加第二个 lambda。

    如果您向页面导航服务添加属性,例如IsCurrentlyPushingPage,它跟踪向导航堆栈的推送何时开始以及何时结束,您可以评估此​​属性并暂时停用 OpenDailyEntry 命令。

    public Command OpenDailyEntry
    {
        get
        {
            return new Command(async (e) =>
               {
                   await CoreMethods.PushPageModel<DailyEntryPageModel>(null);
               },
               () =>
               {
                   return CoreMethods.IsCurrentlyPushingPage == false;
               }
            );
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-12-06
      • 2022-01-15
      • 2021-08-03
      • 1970-01-01
      • 2017-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-16
      相关资源
      最近更新 更多