UIScrollView滚动到不同的位置,同时动画显示模态视图控制器

时间:2013-07-05 08:09:05

标签: cocoa-touch uiscrollview paging presentmodalviewcontroller scroll-paging

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

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

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

以前有过这样的人吗?知道怎么解决吗?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,经过大量调查后,它似乎是UIKit中与scrollviews和AutoLayout相关的错误。这是“修复”......

在viewDidDisappear:中,将当前的scrollview 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;
        });
    }
}