• 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: performKeyEquivalent on NSTextField subclass
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: performKeyEquivalent on NSTextField subclass


  • Subject: Re: performKeyEquivalent on NSTextField subclass
  • From: Keith Alperin <email@hidden>
  • Date: Tue, 4 Jul 2006 15:27:54 -0500

Greetings Cocoa-devs!

The reason that all of the instances of my text field seem to be connected together is that the performKeyEquivalent method is called on many things when you type a key combination (it might even be every instance of an NSResponder, but i'm not sure). Each receiver must then return YES or NO if it wants to handle this particular key combination. As such, we're sort of abusing this method, but this is how everyone seems to capture hot keys. In order to have more than one of these fields in a window, your NSTextField subclass need to be able to determine if it is currently focused on. You might think that this could be done with becomeFirstResponder and resignFirstResponder, but as soon as an NSTextField becomes first responder, it immediately resigns first responder, giving it to the field editor. However, your NSTextField subclass can call [self currentEditor] which will return the field editor if it is currently focused or nil if it is not. Thus, your performKeyEquivalent will look something like this:

- (BOOL)performKeyEquivalent:(NSEvent *)theEvent
{
	if ([self currentEditor]) {
		//handle the event
 	} else {
		NSLog(@"no field editor");
	}
}

I hope that this is useful to someone.

Cheers!
Keith R. Alperin


On Jun 30, 2006, at 7:07 AM, Keith Alperin wrote:

Greetings Cocoa-devs!

I have a home grown NSTextField subclass that i use to capture hot keys (meaning that it captures the keycode and modifiers and displays a human readable string such as "Cmd + Ctrl + A". Unfortunately, it only works when there is one single instance in my window. All subsequent instances seem somehow connected to the first, such that when the second field is focused and i press some keys, the first field displays the key combination. My key handling mojo is done in the (BOOL)performKeyEquivalent:(NSEvent *)theEvent method and works similarly to the way described here (http:// www.cocoabuilder.com/archive/message/cocoa/2006/5/3/162709). By reading that thread, i've seen that a very respectable group has released some code to do this for me, but i'd really like to understand what is going on here. I'd be very grateful to someone for explaining why multiple instances of my NSTextField subclass behave as if they were 1 instance.

Many thanks,
Keith R. Alperin

_______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden

_______________________________________________ Do not post admin requests to the list. They will be ignored. Cocoa-dev mailing list (email@hidden) Help/Unsubscribe/Update your Subscription: This email sent to email@hidden
  • Prev by Date: Re: Slow apparition of the Open Dialog, solution?
  • Next by Date: Re: Why does my custom view grow in the wrong direction?
  • Previous by thread: Re: NSTextView's "Replace All" issues
  • Next by thread: Reading mail accounts with out Mail.app launching
  • Index(es):
    • Date
    • Thread