使用 setContentOffset 将 UITableView 滚动到特定位置无法正常工作 - ObjC

Posted

技术标签:

【中文标题】使用 setContentOffset 将 UITableView 滚动到特定位置无法正常工作 - ObjC【英文标题】:Scrolling UITableView to specific position using setContentOffset not working properly - ObjC 【发布时间】:2017-04-11 12:00:40 【问题描述】:

我在 SO 中看到了很多答案,其中描述了如何将 UITableView 滚动到特定位置。

我使用setContentOffset 滚动到特定位置。

我遇到了一个奇怪的问题。如果我的tableView 滚动了一半,那么setContentOffset 工作正常。但是当我滚动到tableView 的末尾然后使用setContentOffset 时,表格视图会滚动一点。

我的setContentOffset 值为CGPoint(0,199)

[self.tableView setContentOffset:CGPointMake(0,199) animated:NO];

达到底部后,我使用setContentOffset。然后我检查UITableViewcontentOffset。它是169

我无法弄清楚到底是什么问题。

编辑::

我正在使用以下代码。当最后一个单元格中的按钮被按下时:

- (void)userPressedSubmitButtonOnLastCell


[self updateData];
[self.tableView reloadData];
[self performSelector:@selector(scrollTableView) withObject:nil afterDelay:0.5];


- (void)scrollTableView

 [self.tableView setContentOffset:CGPointMake(0,199) animated:NO];

【问题讨论】:

确保您的constraints 正确 是的,我的约束是正确的@Janesh 使用 scrollView 委托代码更新您的问题 @karthikeyan 我没有使用滚动视图。 那么你在哪里设置 setContentOffset 代码以及如何找到滚动底部的表格视图,UITableview 是 UIScrollView 的子视图 【参考方案1】:

为什么不使用tableView scrollToRowAtIndexPath:tableView scrollRectToVisible:(CGRect)?这将允许您滚动到特定的行或矩形。 ContentOffset更适合UIScrollView

【讨论】:

在我的表格视图底部(在最后一行)他们是UIButton。单击该按钮时,我需要在顶部滚动表格视图。我不能使用tableView scrollToRowAtIndexPath:,因为我也有一个标题(表格视图标题)。而且我还需要显示 Header 的某些部分。 我以为你的问题是关于滚动到底部而不是顶部? 我认为你可以使用'tableView scrollRectToVisible:'并设置rect y = 0,这样它就会滚动到表格顶部

以上是关于使用 setContentOffset 将 UITableView 滚动到特定位置无法正常工作 - ObjC的主要内容,如果未能解决你的问题,请参考以下文章

setContentOffset 到滚动视图中的 UIImage 位置

UIScrollView setContentOffset(分页)被触摸屏停止

手动调用 UIRefreshControl 并使用 setContentOffset

使用 setContentOffSet 按钮滚动

UIScrollView 没有使用 setContentOffset:animated 滚动到正确的位置:

UIScrollView 无限滚动 setContentOffset