Detect the end of a UILongPressGestureRecognizer

I am coding the previous/next buttons of a music player. I need these UIButtons to have dual purpose.

1. Tap – Previous/Next song
2. Long Press – Seek

That works, but what got me was that I didn’t know when the end of the long press was so I never knew when to stop seeking. I tried to attach an action to the UIButton on the UIControlEventTouchCancel event, but that is not correct.

This is my setup code:

    gestureSeekBackward = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(seekBackward:)];
    gestureTapBackward = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(previousSong:)];
    gestureTapBackward.numberOfTapsRequired = 1;
    [backwardButton addGestureRecognizer:gestureSeekBackward];
    [backwardButton addGestureRecognizer:gestureTapBackward];

What I needed to do was check whether the state is ended for the seek gesture. Continue reading