Подкласс UITableView и добавьте код, чтобы перехватить вызов textDidEndEditing.
Затем вы можете решить, что делать, основываясь на следующем:
- (void) textDidEndEditing: (NSNotification *) notification
{
NSDictionary *userInfo = [notification userInfo];
int textMovement = [[userInfo valueForKey:@"NSTextMovement"] intValue];
if ([self selectedColumn] == ([[self tableColumns] count] - 1))
(textMovement == NSTabTextMovement)
{
// the tab key was hit while in the last column,
// so go to the left most cell in the next row
[yourTableView editColumn: 0 row: ([self selectedRow] + 1) withEvent: nil select: YES];
}
[super textDidEndEditing: notification];
[[self window] makeFirstResponder:self];
} // textDidEndEditing
Этот код не тестировался ... никаких гарантий ... и т. Д. И вам может понадобиться переместить этот вызов [super textDidEndEditing:] для случая с вкладкой в правой части самой ячейки. Но, надеюсь, это поможет вам до финиша. Дайте мне знать!