7

我正在使用 aUIScrollView来分页三个不同的UIViewControllers. 寻呼机初始化为从开始显示第 1 页。所以用户可以从头开始向左或向右滑动。当我从中间视图控制器呈现模态视图控制器时,UIScrollView在呈现视图控制器的动画期间临时滚动到第一页。当我关闭模态视图控制器时,一切都恢复正常并UIScrollView显示中心视图控制器。

我希望(并希望)UIScrollView在动画期间保持它的位置。

这不是导致崩溃或其他什么的技术错误,它只是丑陋。

以前有人有过吗?知道如何解决吗?

4

1 回答 1

0

我也遇到过同样的问题,经过大量调查,这似乎是 UIKit 中与滚动视图和 AutoLayout 相关的错误。这是“修复”...

在 viewDidDisappear: 中,将当前的滚动视图 contentOffset 保存到一个属性中,并将其重置为零:

- (void)viewDidDisappear:(BOOL)animated 
{
    [super viewDidDisappear:animated];

    self.previousContentOffset = self.scrollView.contentOffset;

    self.scrollView.contentOffset = CGPointZero;
}

然后,在 viewWillAppear: 中,将内容偏移重置回原来的值。我必须将它分派到主队列中才能使其正常工作:

- (void)viewWillAppear:(BOOL)animated 
{
    if (!CGPointEqualToPoint(self.previousContentOffset, CGPointZero))
    {
        dispatch_async(dispatch_get_main_queue(), ^{
            self.scrollView.contentOffset = self.previousContentOffset;
        });
    }
}
于 2013-10-10T05:41:42.240 回答