UITableViewScrollPositionNone不会滚动表视图

时间:2013-01-08 20:14:16

标签: ios objective-c uitableview cocoa-touch uikit

使用selectRowAtIndexPath:animated:scrollPosition:时,我正在传递UITableViewScrollPositionNone。尽管名称,我希望tableview在必要时滚动,以便行可见(如果已经可见,则不滚动)。

  

UITableViewScrollPositionNone -   表格视图以最小的移动滚动感兴趣的行,使其完全可见。如果该行已完全可见,则不会进行滚动。例如,如果行位于可见区域之上,则行为与UITableViewScrollPositionTop指定的行为相同。这是默认值。

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

这可能是不正确的文档?或者我错过了什么?

2 个答案:

答案 0 :(得分:6)

UITableView的selectRowAtIndexPath文档:animated:scrollPosition:有一个部分描述了您的体验。

  

特殊注意事项传递UITableViewScrollPositionNone会   导致没有滚动,而不是描述的最小滚动   为那个常数。要以最小值滚动到新选择的行   滚动,使用此方法选择行   UITableViewScrollPositionNone,然后调用   scrollToRowAtIndexPath:atScrollPosition:animated:with   UITableViewScrollPositionNone。

希望有所帮助!

答案 1 :(得分: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];