0

我在我的一个应用程序中使用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中提到的场景。

屏幕一

屏幕 2

任何帮助将不胜感激。

4

2 回答 2

0

您可以尝试解决此问题以修复 iOS7 上的 contentOffset 重置

[self performSelector:@selector(setContentOffset) withObject:nil afterDelay:0.0];
于 2014-12-24T00:42:34.677 回答
0

刚刚有一个类似的问题,发现了这个问题。

似乎如果我也恢复 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;
于 2014-09-25T12:24:34.263 回答