LilMoke
LilMoke

Reputation: 3444

Detecting a finger being held on an object

I am trying to have an image that when the user touches it, it wiggles and as soon as the user lifts their finger it stops.

Is there a gesture that I can use to detect when the finger is down, not just on the initial touch, or when the user moves there finger?

I have tried a LongPress gesture, but that does not get called the entire time the finger is on the view. Can anyone help me with the best way to active this. Right now i am doing it using touchesBegin, touchesMoved, touchesEnd, but i was wondering if there is a better way.

Any suggestions are greatly appreciated.

Thanks

Upvotes: 2

Views: 1029

Answers (4)

Jody Hagins
Jody Hagins

Reputation: 28409

EDIT Based on the comments, I slightly misunderstood the original question, so I edit my answer to a different solution, which hopefully is a bit more clear (and answers the actual question - not the one that was in my head).

A LongPress gesture is continuous (where a tap gesture is not). That means, the recognizer callback will continue to be invoked until the gesture is complete - which does not happen until the "longpress" is released. So, the following should do what you want. NOTE: I think you want to "start shaking" a view when the long-press is recognized, then "stop shaking" the view when the fingers are released. I just pretended you have functions for that. Substitute appropriately.

 - (void)handleLongPress:(UILongPressGestureRecognizer*)gestureRecognizer
{
    if (gestureRecognizer.state == UIGestureRecognizerStateBegan) {
        StartShakingView(gestureRecognizer.view);
    } else if (gestureRecognizer.state == UIGestureRecognizerStateEnded) {
        StopShakingView(gestureRecognizer.view);
    }
}

Upvotes: 2

samson
samson

Reputation: 1152

It sounds like you want to subclass UIGestureRecognizer, which, as I recall, gets the touchesBegan:... and associated methods. Read the notes on subclassing in the UIGestureRecognizer reference. Or use a UIButton as SomaMan suggests.

Upvotes: 0

strings42
strings42

Reputation: 543

The Apple Touches sample includes code that demonstrate using both UIResponder and UIGestureRecognizer methods.

Either should work for what you're doing.

Upvotes: 1

SomaMan
SomaMan

Reputation: 4164

Simple answer - you could make the image a UIButton, and start the wiggle on TouchDown, and stop it on TouchUpInside or TouchUpOutside

Upvotes: 0

Related Questions