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

Reply via email to