• 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: Intercepting keyDown event from NSComboBox
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Intercepting keyDown event from NSComboBox


  • Subject: Re: Intercepting keyDown event from NSComboBox
  • From: John Stiles <email@hidden>
  • Date: Tue, 12 Feb 2008 18:18:44 -0800

You can subclass NSComboBox and override -keyDown: or -insertText:.
Of course, pass the message on to super if it's not a space.


Graham wrote:

On 13/02/2008, at 12:07 PM, Randall Meadows wrote:

I have a window that has an NSComboBox in it; it is the only thing in the window that can acquire keyboard focus.

The window also has a button in it, which my client has decided he wants activated by pressing the space bar. Therefore I need a way to intercept keyDown events to the combo box (which *always* has keyboard focus).

My first attempt was to subclass the NSComboBox, and receive the controlTextDidChange notification, look for a space character in the stringValue of the control (any other valid value of the combo box will NOT contain a space character), and if one is found, delete it and call performClick on the button. This works, but I view it as an ugly hack. And, it has a nasty side effect: if any of the text displayed in the combo box is selected, that selection effectively gets deleted; this is counter to the purpose of the combo box, which is to display information about the current "stuff" being worked on in the window. I'm thinking I can get around this by refreshing the display of the combo box with the current value, but to me that's just adding more ugly to the hackery that I dislike to begin with.

Is there a better way to intercept keyDown events before the firstResponder gets a whack at it? (Assume that changing the actual UI/UE, at this point, is not an option.)


Or re-educate the client ;-) What if he wants to type a space into the combo-box?

While this is an unhelpful and glib answer, I do feel we have to at least try to get clients to understand why things are not done certain ways and why deeper thinking on an issue will often make them realise that any given idea can be worse than useless.

--------
S.O.S.
_______________________________________________

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: Intercepting keyDown event from NSComboBox
      • From: Randall Meadows <email@hidden>
References: 
 >Intercepting keyDown event from NSComboBox (From: Randall Meadows <email@hidden>)
 >Re: Intercepting keyDown event from NSComboBox (From: Graham <email@hidden>)

  • Prev by Date: Re: NSURLConnection details
  • Next by Date: playing a sequence of tiffs as a movie
  • Previous by thread: Re: Intercepting keyDown event from NSComboBox
  • Next by thread: Re: Intercepting keyDown event from NSComboBox
  • Index(es):
    • Date
    • Thread