So let me see if I get it.

Start the timer on mouseDown... and invalidate it on mouseUp, got that.. now 
the performholdAction method that you declared in the example, I call it from 
within...... ???  because I guess in this method I will check if the time its 
already 1 sec and show the menu... 

Thanks for the help

G..
PS.. I need a after lunch coffee!! 
On Dec 30, 2009, at 12:24 PM, slasktrattena...@gmail.com wrote:

> Sorry, haven't had my morning coffee yet. Of course, mouseUp should be:
> 
> -(void)mouseUp:(NSEvent*)ev
> {
>  if ( [timer isValid] ) {
>      [timer invalidate];
>      [timer release];
>      timer = nil;
>      // perform single-click action
>   }
> }
> 
> On Wed, Dec 30, 2009 at 11:53 AM, slasktrattena...@gmail.com
> <slasktrattena...@gmail.com> wrote:
>> 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