【发布时间】:2013-11-22 17:29:43
【问题描述】:
我有一个表格视图,它显示了我通过网络获取的消息。
当有新消息进来时,它应该被添加到底部的tableview中。
当有新消息进来时,它会正确地添加到 tableview 的底部,但 tableview 会立即滚动到中间。 (所以如果我现在说有 100 个单元格,那么单元格 50 现在将位于滚动视图的中间)。
奇怪的是,只有在插入之前的滚动点位于 tableview 的下半部分时才会发生这种情况。
所以,如果我正在查看 99 个单元格中的第 10 个单元格,并且我添加了一行,它会被添加到底部就好了。
但是,如果我正在查看 99 个单元格中的第 75 个单元格,并且我添加了一行,则滚动位置会再次跳到中间(~单元格 50)。
这是我向 tableview 添加新消息的代码:
[self.tableView beginUpdates];
[self.messages addObject:message];
NSArray *indexPaths = @[[NSIndexPath indexPathForRow:(self.messages.count - 1) inSection:0]];
[self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];
[self.tableView endUpdates];
为什么tableview会这样自动滚动?
【问题讨论】:
-
你不想滚动你的tableview??
-
@hussainShabbir 它在没有任何用户交互的情况下滚动。当我添加一个新行时,我不希望它自动滚动到中间,它现在正在这样做。
-
@Jeff 解决这个问题好运吗?我有同样的问题。使用自我调整大小的单元格,它就像疯了一样跳跃。
标签: ios objective-c uitableview uiscrollview