【问题标题】:UITableViewScrollPositionNone does not scroll the table viewUITableViewScrollPositionNone 不滚动表格视图
【发布时间】:2013-01-08 20:14:16
【问题描述】:

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

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

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

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

【问题讨论】:

  • 文档绝对正确。你在实例化一个 scrollTo 动画吗?
  • 我只是在所有三个示例中调用 [self.tableView scrollToRowAtIndexPath:myPath atScrollPosition:UITableViewScrollPositionNone animated:YES]。
  • 您确认您的边界设置正确了吗?
  • 我正在使用 UITableViewController
  • 当然,但是你的 UITableViewController 有边界,虽然你可以看到它,但边界可能会被另一个类以某种方式偏移。

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


【解决方案1】:

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

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

希望有帮助!

【讨论】:

    【解决方案2】:

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

    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];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-18
      • 2013-12-30
      • 2017-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多