Simple. Start a timer on mouse down, invalidate it on mouse up.
Something like this (written in mail):

NSTimer *timer;

-(void)mouseDown:(NSEvent*)ev
{
    timer=[[[NSTimer alloc] blah ...] retain];
}

-(void)mouseUp:(NSEvent*)ev
{
   if ( [timer isValid] ) {
       [timer invalidate];
       [timer release];
       timer = nil;
    } else {
     // perform single-click action
    }
}

-(void)performHoldAction:(NSTimer*)tmr
{
   // pop up menu
}

-fabian

On Wed, Dec 30, 2009 at 11:18 AM, Gustavo Pizano
<gustavxcodepic...@gmail.com> wrote:
> Hello.
> I want to show a custom menu when the left click its being press for about 1 
> second on some of my components.. I have being searching and found a apple 
> example where the use the
> + 
> (void)startPeriodicEventsAfterDelay:(NSTimeInterval)delaySecondswithPeriod:(NSTimeInterval)periodSeconds
>
> and the stopPeriodicEvents class methods.  I tried implementing something 
> like:
>
>        BOOL timerOn = YES;
>        NSPoint mouseLoc;
>        NSLog(@"before loop");
>        NSUInteger eventMask =  NSLeftMouseDownMask| NSLeftMouseUpMask | 
> NSPeriodicMask;
>        while ((theEvent = [[self window] nextEventMatchingMask:eventMask])) {
>                NSLog(@"onLoop");
>                switch ([theEvent type]) {
>                        case NSLeftMouseUp:
>                                NSLog(@"up");
>                                timerOn = NO;
>                                [NSEvent stopPeriodicEvents];
>                                break;
>                        case NSLeftMouseDown:
>                                NSLog(@"down");
>                                [NSEvent startPeriodicEventsAfterDelay:0.1 
> withPeriod:0.1];
>                                break;
>
>                        default:
>                                break;
>                }
>        }
>
> But of course its completely wrong, it never go out from the loop... I tried 
> a different approach usign a NSTimer, but found myself going nowhere also...
>
> Can somebody give me some advice, or where can I find info?, i have been 
> looking around but hadn't found something... I know this should have been 
> asked already, so there must  be a way to do this.
>
> Thanks in advance .. and happy new year.
>
> Gustavo
>
> _______________________________________________
>
> 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/slasktrattenator%40gmail.com
>
> This email sent to slasktrattena...@gmail.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/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to