Hey Jerry -

A couple of comments.

If you want to call super's super method, one way to do that is to put a category on you super class with a method name that is unique that invokes the selector you want on super. If that sounds evil, that's because it is :). Calling super super is usually a hint that some refactoring would be a better choice. In this case you don't have a choice though since NSTextView isn't your class. NSTextView has you covered though.

You may not know this, but when you edit an NSTextField, you're actually typing into an NSTextView. So NSTextView already has all of the logic to "act like a text field". I believe the property that controlls this is 'isFieldEditor'. I don't have access to the reference docs right now to double check though.

Yet another possibility would be to ovveride insertTab: and insertBackTab: instead of keyDown:, however, I think toggling isFieldEditor is your best bet.

From my phone -
Jon Hess

On Aug 21, 2008, at 1:22 AM, Jerry Krinock <[EMAIL PROTECTED]> wrote:

When the 'tab' or 'backTab' key is pressed, NSTextView accepts it as a character to be typewritten. But sometimes I want NSTextView to behave like an NSTextField, with 'tab' or 'backTab' selecting the next or previous key view. So, in my NSTextView subclass, I over- ride -keyDown: and re-implement the next/previous view selection.

It works, but, besides being redundant code, this re-implementation seems like an evil assumption of some other class' behavior by my subclass. What I really want to say is: "Behave like your 'grandfather' class, NSView". But there is no supersuper keyword.

Is there any way to improve this?.....

- (void)keyDown:(NSEvent*)event {
   NSString *s = [event charactersIgnoringModifiers] ;
   unichar keyChar = 0 ;
   if ([s length] == 1) {
       keyChar = [s characterAtIndex:0] ;

       // Our superclass NSTextView accepts tabs and backtabs as text.
// If we want _tabToNextKeyView, we re-implement the NSView behavior
       // of selecting the next or previous key view
       if ((keyChar == NSTabCharacter)&& _tabToNextKeyView) {
           [[self window] selectNextKeyView:self] ;
       }
else if ((keyChar == NSBackTabCharacter) && _tabToNextKeyView) {
           [[self window] selectPreviousKeyView:self] ;
       }
       else {
// Handle using super's (i.e. NSTextView) - interpretKeyEvents:,
           // which will typewrite the key-downed character
           NSArray* events = [NSArray arrayWithObject:event] ;
           [self interpretKeyEvents:events] ;
       }
   }
}


_______________________________________________

Cocoa-dev mailing list ([email protected])

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/jhess%40apple.com

This email sent to [EMAIL PROTECTED]
_______________________________________________

Cocoa-dev mailing list ([email protected])

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 [EMAIL PROTECTED]

Reply via email to