8

UIViewController在 Interface Builder 中有一个,我UIScrollViewUIView. 它的contentOffset属性等于 0.0,但是当我滚动UIScrollView到最底部并推送另一个视图时,contentOffset更改。

NSLog给我以下值:

//View just loaded
2013-09-09 16:19:27.455 my_app[24588:907] Scroll View content offset is 0.000000

//We came back from another view
2013-09-09 16:19:30.957 my_app[24588:907] Scroll View content offset is 108.000000

这种行为的原因是什么?我刚刚UIScrollView在 IB 中添加了一个,根本没有在代码中做任何事情。

scrollView的contentHeight大于self.view.height。scrollViewframe的保持不变。

4

6 回答 6

12

对于 iOS 7/8self.automaticallyAdjustsScrollViewInsets = NO;解决了这个问题。

于 2014-02-06T07:45:08.597 回答
10

请参阅对类似问题的回答。

您需要在和中contentOffset适当地设置滚动视图。viewWillAppear:viewWillDisappear:

另外,请参见:

于 2013-09-10T23:34:21.277 回答
3

我遇到了类似的问题,在关闭 viewController 后,我的 tableView 的 contentOffset 更改为 (0, -64)。

我的解决方案有点奇怪,我尝试了所有其他答案但没有成功,解决我的问题的唯一方法是在 .xib 的控件树中切换 tableView 位置

它是父视图中的第一个控件,如下所示:

前

我在 ImageView 之后移动了 tableView 并且它起作用了:

后

似乎将表格视图放在第一个位置会引起麻烦,将表格视图移动到另一个位置可以解决问题。

PD我没有使用自动布局也没有故事板

希望这可以帮助某人!

于 2014-04-11T17:13:19.880 回答
3

当您离开滚动视图所在的屏幕并返回时,它将在顶部或左侧或两者上添加屏幕大小的一半。一个空白,你不想要的东西。在我的情况下,分页变得一团糟并且无法正常工作,直到我以用户身份以编程方式或通过触摸将滚动条放入 CGPointZero 中。如果你打电话NSLog( @"%f", scrollview.contentSize.height );viewDidLayoutSubviews你会看到大小已经改变了。

它发生在偏移值不为​​零的轴上。因此,要解决它,您应该CGPointZero在它出现之前将其设置为零。

答案解决了我的@Steph Sharp问题,除非我将视图控制器作为弹出窗口 ( presentViewController) 打开。我试图通过添加错误数量来补偿该值,viewDidLayoutSubviews但它会破坏分页。

简短的回答,我最终得到:

- (void) viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    scrollView.contentOffset = previousPoint;
}

- (void) viewWillAppear:(BOOL)animated
{
    scrollView.contentOffset = CGPointZero;
}

- (void) viewWillDisappear:(BOOL)animated
{
    previousPoint = scrollView.contentOffset;
    scrollView.contentOffset = CGPointZero;
}

现在,当我离开该部分或打开上方的弹出窗口时,它可以工作。

于 2015-05-15T18:46:34.153 回答
1

检查contentSize您的滚动视图的属性是否为CGSizeZero. 我有一个类似的问题,因为contentSize尚未设置。

于 2017-07-17T11:04:47.580 回答
0

我在 UITableView 上使用https://github.com/michaeltyson/TPKeyboardAvoiding 。

我的解决方案是从 UITableView中删除类TPKeyboardAvoidingTableView 。它导致 TableViewController 出现静态和动态单元格的滚动问题。

于 2015-05-20T15:29:20.697 回答