我正在玩UITableView
,我创建了2个按钮。
其中一个按钮会使表格视图向上滚动一定量 而另一个会导致表视图向下滚动一个数量。
向上滚动:
[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
时禁止向下滚动的尝试。但它似乎没有用。
无论如何,我可以检测到顶部和底部的滚动屏幕都在屏幕外?换句话说,我想阻止它在第一个单元格上方滚动,并且在最后一个单元格之后滚动到底部。
答案 0 :(得分:1)
而不是在您的班级中保留变量up
和down
,并将现有 contentOffset
转移到这些金额(然后您更改,这不会&# 39;对我来说有意义),为什么不把它保持在局部并且恒定地移动:
- (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 */ }
}
那部分只是一个想法...我认为真正的解决方案在于包括tableView.bounds
在&#34;我应该滚动&#34;检查。