Пара вещей:
Возможно, вам лучше использовать UITextField вместо UITextView. UITextField идеально подходит для однострочных записей, например, описываемых здесь.
Что касается вашего решения, вот что я бы порекомендовал. (Также позволил себе очистить управление памятью)
Добавьте свойство BOOL в свой класс Player с именем, скажем, 'needsKeyboardDisplay', а затем установите его равным yes после создания нового экземпляра.
-(IBAction)addPlayerPressed:(id)sender {
Player *newPlayer = [[Player alloc] init];
newPlayer.needsKeyboardDisplay = YES;
[players addObject:newPlayer];
[newPlayer release];
[table reloadData];
// Scroll to bottom showing the new player location
NSIndexPath *scrollIndexPath = [NSIndexPath indexPathForRow:([players count] - 1) inSection:0];
[table scrollToRowAtIndexPath:scrollIndexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];
}
Затем в cellForRowAtIndexPath вставьте это после того, как вы настроили свою ячейку:
Player *playerForCell = [players objectAtIndex:indexPath.row];
if (playerForCell.needsKeyboardDisplay)
{
[nameField becomeFirstResponder];
playerForCell.needsKeyboardDisplay = NO;
}
Все, что сказано, с точки зрения пользовательского опыта, (несколько) стандартное взаимодействие с iPhone для редактирования деталей в длинном списке элементов, подобных этому, заключается в том, чтобы сделать это в другом виде. Конечно, решать вам.