使用selectRowAtIndexPath:animated:scrollPosition:
时,我正在传递UITableViewScrollPositionNone
。尽管名称,我希望tableview在必要时滚动,以便行可见(如果已经可见,则不滚动)。
UITableViewScrollPositionNone - 表格视图以最小的移动滚动感兴趣的行,使其完全可见。如果该行已完全可见,则不会进行滚动。例如,如果行位于可见区域之上,则行为与UITableViewScrollPositionTop指定的行为相同。这是默认值。
但是,我发现表视图根本不滚动。如果我使用UITableViewScrollPositionTop
或UITableViewScrollPositionBottom
,表格视图会按预期滚动。
这可能是不正确的文档?或者我错过了什么?
答案 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];