我只是在玩UITableView,我创建了两个按钮。
其中一个按钮将导致表视图向上滚动一定数量,而另一个按钮将导致表视图向下滚动一定数量。
向上滚动:
[self.tableView setContentOffset:CGPointMake(self.tableView.contentOffset.x, self.tableView.contentOffset.y + up) animated:YES];
up += 10;向下滚动:
[self.tableView setContentOffset:CGPointMake(self.tableView.contentOffset.x, self.tableView.contentOffset.y + down) animated:YES];
down -= 10;一切都很好,很有趣。但问题是,我不知道如何防止滚动从屏幕的顶部和底部的滚动。到目前为止,它将继续向上或向下滚动,甚至显示空白,同样适用于底部。
我尝试过使用contentSize属性,但它似乎不起作用。
不工作意味着:
if(up < self.tableView.contentSize.height)
{
[self.tableView setContentOffset:CGPointMake(self.tableView.contentOffset.x, self.tableView.contentOffset.y + up) animated:YES];
up += 10;
}以上是当金额(up)大于contentSize时不允许向下滚动的尝试。但似乎不起作用。
不管怎么说,我能检测到屏幕上和底部的滚动都在离屏吗?换句话说,我想防止它在第一个单元格上方滚动,对于底部超过最后一个单元格。
发布于 2014-08-26 18:10:44
与其将变量up和down保留在类中,并将现有的contentOffset按这些值移动(然后更改这些值,这对我来说没有意义),为什么不将所有变量保持在本地,并以恒定的数量进行调整:
- (void)buttonClicked:(id)sender
{
CGPoint offset = self.tableView.contentOffset;
CGSize visibleSize = self.tableView.bounds.size;
if (sender == btnUp)
{
offset = CGPointMake(offset.x, offset.y + 10);
if (offset.y < (self.tableView.contentSize.height - visibleSize.height))
[self.tableView setContentOffset: offset animated:YES];
}
else if (sender == btnDown) { /* you get the idea */ }
}这部分只是一个idea...the真正的解决方案,我认为这取决于在“应否滚动”检查中包括tableView.bounds。
https://stackoverflow.com/questions/25507857
复制相似问题