Arno Moonens
Arno Moonens

Reputation: 1213

Behavior when inserting a row to a UITableView

I am making a chat application. When the keyboard appears, my UITableView and toolbar (with textfield and button) move up using the setFrame method.

The problem occurs when I am receiving a message from another user while I'm typing a message. When that happens (i.e. after an insertRowsAtIndexPaths to the UITableView), my UITableView and toolbar "reset" to their original positions.

Is this normal behavior caused by the system? I can't find anything in my code that would do this. I want that the toolbar remains visible so I can still type my message.

This is the code to add a convoItem (conversation item) to my array and UITableView:

- (void)insertConvoItem:(ConvoItem *)item
{
    [_convoItems addObject:item];

    // Update the table view
    NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:([self.convoItems count] - 1) inSection:0];
    [self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];

    // Scroll to the bottom so we focus on the latest message
    NSUInteger numberOfRows = [self.tableView numberOfRowsInSection:0];
    if (numberOfRows) {
        [self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:(numberOfRows - 1) inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:YES];
    }
}

Upvotes: 0

Views: 110

Answers (1)

joanna
joanna

Reputation: 63

It's normal. Receiving new message resets your table view to it's original position.

Upvotes: 1

Related Questions