On Apr 30, 2010, at 9:32 AM, Charles Srstka wrote:

> On Apr 30, 2010, at 11:08 AM, Bill Appleton wrote:
> 
>> don't i need to use interpretKeyEvents to gather the key events until
>> insertText is called?
> 
> Yep, just do something like this:
> 
> - (void)keyDown:(NSEvent *)theEvent {
>    [self interpretKeyEvents:[NSArray arrayWithObject:theEvent]];
>    [NSCursor setHiddenUntilMouseMoves:YES]; // to make the cursor hide while 
> you are typing like Mac users are used to
> }
> 
> Then, you override insertText:replacementRange: to get text that should be 
> typed. If you want to do something like the arrow keys, then override the 
> various methods in NSResponder. For example, if the user hits the right arrow 
> key, your object will get a -moveRight: message. If you do this, then your 
> app will still work with custom key bindings the user has set up (since the 
> text system is completely configurable). So say a user decides he wants his 
> keypad to work like a PC with “Num Lock” off, and sets up his key bindings so 
> that the 4, 8, 6, and 2 keys on the keypad map to the same methods that the 
> arrow keys are bound to. In this case, your app will Just Work™ without even 
> having to know about this user’s unusual setup.

Here is the normal sequence when a text-handling view receives key events:  the 
keyDown: method passes events to interpretKeyEvents:, which is where they enter 
key binding and input management.  They come out either as insertText: or as 
doCommandBySelector: (see NSResponder.h for these three methods).  insertText: 
will be used for text input, doCommandBySelector: with an appropriate selector 
for special keys like arrow keys.  The relevant selectors are mostly listed in 
NSResponder.h.  The default NSResponder implementation of doCommandBySelector: 
checks whether the receiver responds to the given selector, and if so calls it; 
otherwise it is passed on to the next responder's doCommandBySelector:.

Douglas Davidson

_______________________________________________

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

Reply via email to