处理按钮手势,用于单击和双击/点击



在 Xamarin 窗体中:我希望能够同时检测单击/点击和双击/点击,并能够执行不同的操作。

也就是说,当按钮被点击时,我想执行actionA,当按钮被双击时,我想执行actionB,并且只能执行actionB

你需要一个实际的按钮吗?否则看看TapGestureRecognizer.在这篇文章中描述了如何使用它。您几乎可以将其应用于任何控件。

例如,如果将Label样式设置为看起来像按钮,则可以在其上添加双击识别器,如下所示:

<Label Text="Tap me, I double dare you">
    <Label.GestureRecognizers>
        <TapGestureRecognizer
                Tapped="OnTapGestureRecognizerTapped"
                NumberOfTapsRequired="2" />
  </Label.GestureRecognizers>
</Label>

当然,你需要在代码中隐藏一个名为 OnTapGestureRecognizerTapped 的事件。但由于 NumberOfTapsRequired 属性中的值,您需要双击才能激活它。

如果您更喜欢代码,这将是对应的:

var tapGestureRecognizer = new TapGestureRecognizer();
tapGestureRecognizer.NumberOfTapsRequired = 2;
tapGestureRecognizer.Tapped += (s, e) => {
    // handle the tap
};
label.GestureRecognizers.Add(tapGestureRecognizer);

这是我最终所做的(向Amit Patil致敬(:

    private static int clickCount;
    private static object _sender;
    private void Button_Clicked(object sender, EventArgs e)
    {
        if (clickCount < 1)
        {
            TimeSpan tt = new TimeSpan(0, 0, 0, 0, 250);
            _sender = sender;
            Device.StartTimer(tt, ClickHandle);
        }
        clickCount++;
    }
    bool ClickHandle()
    {
        if (clickCount > 1)
        {
            Minus1(_sender);
        }
        else
        {
            Plus1(_sender);
        }
        clickCount = 0;
        _sender = null;
        return false;
    }

ViewModel.cs:

private bool _isClicked = true;
public bool IsClicked
{
  get { return _isClicked = true; }
  set { _isClicked = true = value; OnPropertyChanged(); }
}

View.xaml:

<Button Text="Click!" IsEnabled="{Binding IsClicked}" />

方法(在视图模型中.cs(:

public void MyMethod()
{
  IsClicked = false;
    
  // Your code
  IsClicked = true;
}

相关内容

  • 没有找到相关文章