or if you are coding for 3.2 or later, use a UILongPressGestureRecognizer and let it do all the work.
On 06-Jun-2010, at 12:36 AM, Scott Andrew wrote: > I believe the way to do this is to setup a timer on touchDown to fire once > after X number of seconds. Your touchUp and touchCancelled should kill the > timer if the timer is exists and is not invalidated. If you hit the timer you > are being held. When the timer is hit you restart the timer again for the > next check. > > Scott > > > On Jun 4, 2010, at 7:16 PM, Alejandro Marcos Aragón wrote: > >> Hi all, >> >> I've been trying to detect touch and hold vs touch on a subclass of >> UIButton. I basically accomplished that by doing the following: >> >> I first add the following when the button is created: >> >> >> [button addTarget:self action:@selector(sourceSelected:) >> forControlEvents:UIControlEventTouchUpInside]; >> [button addTarget:self action:@selector(sourceTouchDown:) >> forControlEvents:UIControlEventTouchDown]; >> >> Then in the functions: >> >> - (void) sourceSelected:(UIButton*) sender { >> >> >> // cancel request for extended meny >> [NSObject cancelPreviousPerformRequestsWithTarget:self >> selector:@selector(sourceSelectedExtended:) object:sender]; >> ... >> } >> >> - (void) sourceTouchDown:(UIButton*) sender { >> >> // give time before performing action >> [self performSelector:@selector(sourceSelectedExtended:) >> withObject:sender afterDelay:0.5]; >> } >> >> - (void) sourceSelectedExtended:(UIButton*) sender { >> >> // remove action from button >> [sender removeTarget:self action:@selector(sourceSelected:) >> forControlEvents:UIControlEventTouchUpInside]; >> ... >> ... >> // give time before performing action >> [self performSelector:@selector(addSourceAction:) withObject:sender >> afterDelay:1.]; >> >> } >> >> - (void) addSourceAction:(UIButton*)sender { >> >> // remove action from button >> [sender addTarget:self action:@selector(sourceSelected:) >> forControlEvents:UIControlEventTouchUpInside]; >> >> } >> >> >> >> Now, this works fine, but then I thought there must be an easier (and >> definitely more elegant) way to accomplish the same thing. >> >> Can someone through me a line here? >> >> Thank you all, >> >> aa >> >> >> _______________________________________________ >> >> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) >> >> Please do not post admin requests or moderator comments to the list. >> Contact the moderators at cocoa-dev-admins(at)lists.apple.com >> >> Help/Unsubscribe/Update your Subscription: >> http://lists.apple.com/mailman/options/cocoa-dev/scottandrew%40roadrunner.com >> >> This email sent to scottand...@roadrunner.com > > _______________________________________________ > > Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) > > Please do not post admin requests or moderator comments to the list. > Contact the moderators at cocoa-dev-admins(at)lists.apple.com > > Help/Unsubscribe/Update your Subscription: > http://lists.apple.com/mailman/options/cocoa-dev/rols%40rols.org > > This email sent to r...@rols.org _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com