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