Tom Dev
Tom Dev

Reputation: 1114

UIGestureRecognizer - detecting tap and drag like trackpad

Is there any way to cascade UIGestureRecognizers to detect a tap and then drag. For example, I want to detect when the user taps and then drags his finger around.

This would be similar how drag works on trackpads.

So I want to detect a tap, then I want to get UIPanGestureRecognizer to send me continuous updates.

I want to use standard UIGesture classes to create this new gesture instead of creating my own using raw touches.

Is this even possible?

Upvotes: 13

Views: 8622

Answers (1)

Tom Dev
Tom Dev

Reputation: 1114

although i haven't found the solution the way i expected, i found a better solution.

By just using UILongPressGrstureRecognizer, it is surprising that it is able to implement tap and drag.

You have to:

  1. set the numberOfTapsRequired to 1 to detect the initial tap.
  2. set the minimumDuration something smaller to detect drags quicker without waiting

e.g.:

UILongPressGestureRecognizer *mouseDrag = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleDrag:)];
mouseDrag.numberOfTapsRequired=1;
mouseDrag.minimumPressDuration=0.05;
[clickLeft requireGestureRecognizerToFail:mouseDrag];

to handle the drag, you must determine the state to handle it appropriately as a continuous gesture.

Upvotes: 27

Related Questions