Handling Button gesture for both single and double click/tap

匆匆过客 提交于 2019-12-23 01:10:53

问题


In Xamarin Forms: I want to be able to detect both click/tap and double-click/tap, and to be able to perform different actions.

That is, when the button is clicked I want to perform actionA, and when the button is double-clicked I want to perform actionB, and only actionB.


回答1:


Do you need an actual button? Else look at the TapGestureRecognizer. In this post is described how you can use it. You can apply it to virtually any control.

For example if you would style a Label to look like a button, you would add a double tap recognizer on it like this:

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

Of course you need to have an event called OnTapGestureRecognizerTapped in your code behind. But because of the value in the NumberOfTapsRequired property, you will need a double tap to activate it.

If you prefer code, this would be the counterpart:

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



回答2:


Here's what I ended up doing (kudos to 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;
    }


来源:https://stackoverflow.com/questions/42911926/handling-button-gesture-for-both-single-and-double-click-tap

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!