UILongPressGestureRecognizer in Xamarin IOS

Issue

I’m currently working with “Press and hold” on a button, here is my code:

public override void AwakeFromNib()
{
    base.AwakeFromNib();

    longp  new UILongPressGestureRecognizer(LongPress);
    button.AddGestureRecognizer(longp);
}

public void LongPress()
{
    if (a  true)
    {
       a  false;
    }
    else
    {
       a  true;
    }
    // stop recognizing long press gesture here
}

The problem is since I’m running a toggle method to change a value, all it does is just spamming the method LongPress, how to I cancel or stop the holding after changing the value?

Update

I’ve managed to get it work, here is my code example:

public void LongPress(UILongPressGestureRecognizer g)
{
    if (g.State  UIGestureRecognizerState.Began)
    {
        if (a  true)
        {
            a  false;
        }
        else
        {
            a  true;
        }
    }
}

Solution

Try to pass a UILongPressGestureRecognizer as parameter to LongPress method , and change its State when you want to stop it .

sample code

public void LongPress(UILongPressGestureRecognizer g)
{
    if (a  true)
    {
        a  false;
    }
    else
    {
        a  true;
    }

    // stop recognizing long press gesture here
    g.State  UIGestureRecognizerState.Ended; 
}

Answered By – ColeX – MSFT

Leave a Comment