The performholdAction is your timer's fire method. You set the timer to fire after one second. If the mouse button goes up before that, you invalidate the timer and so performholdAction is never called.
-f On Wed, Dec 30, 2009 at 12:42 PM, Gustavo Pizano <gustavxcodepic...@gmail.com> wrote: > 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