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

flo*_*hei 7 paging cocoa-touch uiscrollview presentmodalviewcontroller scroll-paging

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

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

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

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

Viz*_*llx 0

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

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

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

    self.previousContentOffset = self.scrollView.contentOffset;

    self.scrollView.contentOffset = CGPointZero;
}
Run Code Online (Sandbox Code Playgroud)

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

- (void)viewWillAppear:(BOOL)animated 
{
    if (!CGPointEqualToPoint(self.previousContentOffset, CGPointZero))
    {
        dispatch_async(dispatch_get_main_queue(), ^{
            self.scrollView.contentOffset = self.previousContentOffset;
        });
    }
}
Run Code Online (Sandbox Code Playgroud)