7

使用时selectRowAtIndexPath:animated:scrollPosition:,我是传入UITableViewScrollPositionNone。尽管有这个名字,我希望表格视图在必要时滚动,以便该行可见(如果它已经可见,则不滚动)。

UITableViewScrollPositionNone - 表格视图滚动感兴趣的行,以最小的移动完全可见。如果该行已经完全可见,则不会发生滚动。例如,如果行在可见区域上方,则行为与 UITableViewScrollPositionTop 指定的行为相同。这是默认设置。

但是,我发现表格视图根本不滚动。如果我使用UITableViewScrollPositionTopor UITableViewScrollPositionBottom,表格视图会按预期滚动。

有可能这方面的文档不正确吗?还是我错过了什么?

4

2 回答 2

7

UITableView 的 selectRowAtIndexPath:animated:scrollPosition: 的文档有一个部分描述了您所遇到的情况。

特殊注意事项 传递 UITableViewScrollPositionNone 将导致不滚动,而不是为该常量描述的最小滚动。要以最小滚动滚动到新选择的行,请使用 UITableViewScrollPositionNone 使用此方法选择行,然后使用 UITableViewScrollPositionNone 调用 scrollToRowAtIndexPath:atScrollPosition:animated:。

希望有帮助!

于 2013-07-30T08:02:55.293 回答
0

您需要确保表格视图的内容视图有滚动空间。我曾经需要滚动表格视图,因为用户点击文本字段并且键盘出现,我需要将表格视图的内容扩展到键盘高度的高度,以便表格视图可以滚动。像这样:

UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, keyboardFrame.size.height, 0.0);
self.tableView.contentInset = contentInsets;
self.tableView.scrollIndicatorInsets = contentInsets;
[self.tableView scrollToRowAtIndexPath:self.currentEditingCellIndexPath atScrollPosition:UITableViewScrollPositionNone animated:YES];
于 2013-01-09T13:51:19.400 回答