FROM : Ricky Sharp
DATE : Mon Feb 04 00:37:21 2008
On Feb 3, 2008, at 5:30 PM, Jerry Krinock wrote:
> I've implemented the following method in my NSTableView subclass
> which makes the 'return' key begin editing, like Finder does. It
> works, but I don't like that hard-coded keycode 0xd for 'carriage
> return'.
Well, you can always use NSCarriageReturnCharacter instead.
Also, Finder handles the Enter key as well to start editing. For
that, use NSEnterCharacter.
Site note: Finder doesn't allow Control-M to also start editing; for
shame :)
> Is there a better way to do this? I tried to implement -
> insertNewline:, but it never gets invoked.
The insertNewLine APIs basically handle cases where you've already
started editing. I think what you have below is a good approach.
> - (void)keyDown:(NSEvent*)event {
> NSString *s = [event charactersIgnoringModifiers] ;
> unichar keyChar = 0 ;
> BOOL didDo = NO ;
> if ([s length] == 1) {
> keyChar = [s characterAtIndex:0] ;
> if (keyChar == 0xd) {
> // Unless editing is already in process, which is not the
> // case we're trying to handle here, an entire row will
> // be selected and therefore [self selectedColumn] will
> // be the "no selection" indicator, -1. So, we edit column
> // 0. If the user wants a different column, they can
> // easily tab to it.
> [self editColumn:0
> row:[self selectedRow]
> withEvent:nil
> select:YES] ;
> didDo = YES ;
> }
> }
>
> if (!didDo) {
> [super keyDown:event] ;
> }
> }
___________________________________________________________
Ricky A. Sharp mailto:<email_removed>
Instant Interactive(tm) http://www.instantinteractive.com
DATE : Mon Feb 04 00:37:21 2008
On Feb 3, 2008, at 5:30 PM, Jerry Krinock wrote:
> I've implemented the following method in my NSTableView subclass
> which makes the 'return' key begin editing, like Finder does. It
> works, but I don't like that hard-coded keycode 0xd for 'carriage
> return'.
Well, you can always use NSCarriageReturnCharacter instead.
Also, Finder handles the Enter key as well to start editing. For
that, use NSEnterCharacter.
Site note: Finder doesn't allow Control-M to also start editing; for
shame :)
> Is there a better way to do this? I tried to implement -
> insertNewline:, but it never gets invoked.
The insertNewLine APIs basically handle cases where you've already
started editing. I think what you have below is a good approach.
> - (void)keyDown:(NSEvent*)event {
> NSString *s = [event charactersIgnoringModifiers] ;
> unichar keyChar = 0 ;
> BOOL didDo = NO ;
> if ([s length] == 1) {
> keyChar = [s characterAtIndex:0] ;
> if (keyChar == 0xd) {
> // Unless editing is already in process, which is not the
> // case we're trying to handle here, an entire row will
> // be selected and therefore [self selectedColumn] will
> // be the "no selection" indicator, -1. So, we edit column
> // 0. If the user wants a different column, they can
> // easily tab to it.
> [self editColumn:0
> row:[self selectedRow]
> withEvent:nil
> select:YES] ;
> didDo = YES ;
> }
> }
>
> if (!didDo) {
> [super keyDown:event] ;
> }
> }
___________________________________________________________
Ricky A. Sharp mailto:<email_removed>
Instant Interactive(tm) http://www.instantinteractive.com
| Related mails | Author | Date |
|---|---|---|
| Jerry Krinock | Feb 4, 00:30 | |
| Ricky Sharp | Feb 4, 00:37 | |
| Jerry Krinock | Feb 4, 19:33 |






Cocoa mail archive

