Reputation: 2217
I am using a UIPanGestureRecogniser
to implement drag and drop. When the drag starts I need to identify the object that is being dragged. However the objects are relatively small. And if the user doesn't hit the object right in the centre of the object it isn't getting dragged.
The problem is that when the gesture handler is first called with the state UIGestureRecognizerStateBegan
, the finger has already moved several pixels, and so [UIPanGestureRecognizer locationInView:]
returns that point, which is not where the gesture truly started. That makes sense as it can only recognize a pan after a few pixels of movement. However, I need the absolute start of the gesture, not the position after the gesture has first been recognized.
I'm thinking that maybe I need to implement a tap gesture recognizer as well, purely to capture the first touch. But that seems like a hack for what is not an unusual requirement. Is there no other way of getting that first touch from within the pan gesture recognizer?
Upvotes: 1
Views: 889
Reputation: 4818
UIGestureRecognizerDelegate
protocol provides methods gestureRecognizerShouldBegin:
and gestureRecognizer:shouldReceiveTouch:
that can help you evaluate the touches before the pan has transitioned to state UIPanGestureRecognizerStateBegan
Upvotes: 1