当用户在修改表格中的数据时,按回车、TAB或者shift+TAB键,会结束当前的编辑,同时跳到下一行。

但是某些时候你可能不希望跳到下一行,用户希望编辑特定的行,并不想编辑其他行。那么如何用代码禁用这一功能呢?

 
要结束编辑,你需要继承NSTableView类,在textDidEndEditing中增加自己的代码,以便托管消息,取消行的跳转,然后再让NSTableView进行其他处理。
 
代码如下:
 
- (void) textDidEndEditing: (NSNotification *) notification
{
    NSDictionary *userInfo = [notification userInfo];
           
    int textMovement = [[userInfo valueForKey:@"NSTextMovement"] intValue];
           
    if (textMovement == NSReturnTextMovement
        || textMovement == NSTabTextMovement
        || textMovement == NSBacktabTextMovement) {
                  
        NSMutableDictionary *newInfo;
        newInfo = [NSMutableDictionary dictionaryWithDictionary: userInfo];
                  
        [newInfo setObject: [NSNumber numberWithInt: NSIllegalTextMovement]
                                               forKey: @"NSTextMovement"];
                  
        notification =
                   [NSNotification notificationWithName: [notification name]
                                                                                     object: [notification object]
                                                                                    userInfo: newInfo];
                  
    }
           
    [super textDidEndEditing: notification];
    [[self window] makeFirstResponder:self];
           
} // textDidEndEditing