• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Showing a menu after a delay...?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Showing a menu after a delay...?


  • Subject: Re: Showing a menu after a delay...?
  • From: Eric Gorr <email@hidden>
  • Date: Mon, 1 Feb 2010 17:08:02 -0500

Sadly, that does not work.

performSelector:withObject:afterDelay: will only perform the selector after a delay after the mouse button goes up. I had actually tried doing this manually with the code

NSTimer *mouseStillDownTimer = [NSTimer timerWithTimeInterval:1 target:self selector:@selector(mouseStillDown:) userInfo:NULL repeats:NO];
NSRunLoop	*currentRunLoop = [NSRunLoop currentRunLoop];

[currentRunLoop addTimer:mouseStillDownTimer forMode:NSDefaultRunLoopMode];

when I first noticed the timers (which performSelector:withObject:afterDelay relies upon) don't fire until after the mouse button goes up.

I believe this is why there are NSPeriodic events (see the Other Types of Events section in the Cocoa Event-Handling Guide).

Still, I am not certain how to determine what mouse buttons are down.

The NSEvent methods are either >= 10.6 or for tablets only.

I suppose I could go to Carbon (StillDown?) to get this information, but I was hoping for a Cocoa based solution.

Thank you.


On Feb 1, 2010, at 4:44 PM, Richard Penwell wrote:

> An alternative technique would be roughly:
>
> 1. Detect mouse down, set state down
> 2. Call performSelectorAfterDelay 1 second with a test method
> 3. If the mouse goes up, set state up
> 4. In the test method, test if the state is down...
>
> On Feb 1, 2010, at 4:42 PM, Eric Gorr wrote:
>
>> What I am trying to accomplish is displaying a menu (perhaps with NSPopUpButtonCell's performClickWithFrame method) after a user clicks on a sublass of NSButton and holds the left mouse button for >= 1 second.
>>
>> Is anyone aware of any sample code doing this?
>>
>> I imagine I will need to customize the mouseDown method of NSButton with a loop that checks to see if the mouse button is still down. However, I am uncertain how to determine this. I have seen NSEvent's pressedMouseButtons method, but it only became available with the 10.6 SDK and I need something that works with 10.5.
>>
>> I am also thinking that I may be taking the wrong approach, so any suggestions on what approach I should be taking would be appreciated.
>>
>> Thank you._______________________________________________
>>
>> 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

  • Follow-Ups:
    • Re: Showing a menu after a delay...?
      • From: Eric Schlegel <email@hidden>
References: 
 >Showing a menu after a delay...? (From: Eric Gorr <email@hidden>)
 >Re: Showing a menu after a delay...? (From: Richard Penwell <email@hidden>)

  • Prev by Date: Re: Showing a menu after a delay...?
  • Next by Date: Re: Showing a menu after a delay...?
  • Previous by thread: Re: Showing a menu after a delay...?
  • Next by thread: Re: Showing a menu after a delay...?
  • Index(es):
    • Date
    • Thread