【问题标题】:UITableView contentOffset issue in iOS 7iOS 7 中的 UITableView contentOffset 问题
【发布时间】:2014-07-18 07:27:27
【问题描述】:

我在我的一个应用程序中使用RATreeView,但在内容偏移方面遇到了一些奇怪的问题(如果我错了,请纠正我)。访问了许多关于“SO”的线程,但没有运气。

我在表格视图的每个单元格中都有一些复选框,有 n 个单元格,假设在第一次启动时我有 20 个可见的单元格,现在我想点击其他复选框,所以我向下滚动,现在如果我点击TableView 的最后一个复选框 contentOffset(y 偏移)被更改并且表格向下滚动。 此问题仅适用于 iso 7,不适用于 ios 6。

在 viewDidLoad -

if([[[[UIDevice currentDevice] systemVersion] componentsSeparatedByString:@"."][0] intValue] >= 7) 
{
    self.automaticallyAdjustsScrollViewInsets = NO;
} 

内部 chekboxClickAction - 重新加载表格 这是我尝试过的 -

//-----方法1----->>

CGPoint offset = [[self treeView] contentOffset];
[self.treeView reloadData];
self.treeView.contentOffset = CGPointMake(offset.x, offset.y);

//-----方法2----->>

CGPoint offset = [[self treeView] contentOffset];
[self.treeView reloadData];
[self.treeView setContentOffset:CGPointMake(0, offset.y)];
[self.treeView setContentInset:UIEdgeInsetsMake(0,0,0,0)];

但没有运气。

以下是image1和Image2中提到的场景。

任何帮助将不胜感激。

【问题讨论】:

  • 我想你应该问问RATreeView的开发人员,如果你还没有弄清楚他的组件是如何工作的——或者你可以实现一个你可以完全控制的自己的树视图。

标签: uitableview ios7 contentoffset


【解决方案1】:

刚遇到类似问题,发现了这个问题。

如果我也恢复 contentSize ,它似乎会回滚到原来的位置(但是我的项目是不变的,代码需要对动态内容进行一些调整)。

CGPoint crtOffset = self.treeView.contentOffset;
CGSize beforeContentSize = self.treeView.contentSize;
[self.treeView reloadData];
for (RADataObject * item in self.items)
{
    [self.treeView expandRowForItem:item withRowAnimation:RATreeViewRowAnimationNone];
}

self.treeView.contentSize = beforeContentSize;
self.treeView.contentOffset = crtOffset;

【讨论】:

    【解决方案2】:

    你可以试试这个解决方法来修复 iOS7 上的 contentOffset 重置

    [self performSelector:@selector(setContentOffset) withObject:nil afterDelay:0.0];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多