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