UITextField в UITableViewCell - добавление новых ячеек

Я пытаюсь создать табличное представление, подобное представлению загрузки видео YouTube в Фотогалерее на iPhone.

Вот базовая настройка.

У меня есть пользовательский UITableViewCell, который содержит UITextField. Отображение ячейки в моей таблице прекрасно работает, и я могу редактировать текст без проблем. Я создал обработчик событий, чтобы я мог видеть, когда текст изменился в текстовом поле.

[textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]

То, что я хочу сделать, это. Когда пользователь впервые редактирует текст, я хочу вставить новую ячейку в табличное представление под текущей ячейкой (newIndexPath вычисляется до правильной позиции):

[self.tableView beginUpdates];
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationBottom];
[self.tableView endUpdates];

Проблема состоит в том, что когда я запускаю код вставки ячейки, ячейка создается, но текст текстового поля ненадолго обновляется, но затем клавиатура отклоняется, и текстовое поле возвращается к пустой строке.

Любая помощь будет потрясающей! Я весь этот день бился головой об этом.

- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section
{
    if (section == 0)
        return 2;
    else
        return self.tags.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    ...
    cell = (SimpleTextFieldTableCell *)[tableView dequeueReusableCellWithIdentifier:tagCellIdentifier];

    if (cell == nil)
    {
        cell = [[[NSBundle mainBundle] loadNibNamed:@"SimpleTextFieldTableCell" owner:nil options:nil] lastObject];
    }

    ((SimpleTextFieldTableCell *)cell).textField.delegate = self;
    ((SimpleTextFieldTableCell *)cell).textField.tag = indexPath.row;
    ((SimpleTextFieldTableCell *)cell).textField.text = [self.tags objectAtIndex:indexPath.row];
    [((SimpleTextFieldTableCell *)cell).textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];

    cell.selectionStyle = UITableViewCellSelectionStyleNone;
}

- (void)textFieldDidChange:(id)sender
{
    UITextField *textField = sender;

    [self.tags replaceObjectAtIndex:textField.tag withObject:textField.text];
    if (textField.text.length == 1)
    {
        [textField setNeedsDisplay];
        [self addTagsCell];
    }
}

- (void)addTagsCell
{
    NSString *newTag = @"";
    [self.tags addObject:newTag];

    NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:self.tags.count - 1 inSection:1];
    [self.tableView beginUpdates];
    [self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationBottom];
    [self.tableView endUpdates];
}

Ответы на вопрос(2)

Ваш ответ на вопрос