Re: Knowing mouse pressed time?
Re: Knowing mouse pressed time?
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
<email@hidden> 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, email@hidden 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, email@hidden
>> <email@hidden> 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
>>> <email@hidden> 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 (email@hidden)
>>>>
>>>> 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:
>>>>
>>>> This email sent to email@hidden
>>>>
>>>
>
>
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden