cocoa-touch - UIScrollView 在模态视图 Controller 的动画演示中滚动到不同的位置

标签 cocoa-touch uiscrollview paging presentmodalviewcontroller scroll-paging

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

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

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

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

最佳答案

我也遇到过同样的问题,经过大量调查,这似乎是 UIKit 中与 ScrollView 和自动布局有关的错误。这是“修复”...

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

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

    self.previousContentOffset = self.scrollView.contentOffset;

    self.scrollView.contentOffset = CGPointZero;
}

然后,在 viewWillAppear: 中,将内容偏移量重置回原来的值。我必须将它分派(dispatch)到主队列以使其正常工作:
- (void)viewWillAppear:(BOOL)animated 
{
    if (!CGPointEqualToPoint(self.previousContentOffset, CGPointZero))
    {
        dispatch_async(dispatch_get_main_queue(), ^{
            self.scrollView.contentOffset = self.previousContentOffset;
        });
    }
}

关于cocoa-touch - UIScrollView 在模态视图 Controller 的动画演示中滚动到不同的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17484070/

相关文章:

iphone - 带有实时数据的 UITableView 同时也有用户交互

ios - 应用程序屏幕上的图像和 Html 内容组合滚动

operating-system - 内核/用户模式之间的转换是由硬件还是软件完成的?

linux - 由于错误的分页请求导致内核 panic

ios - iOS 7.0.3 中的条形半透明消失了

swift - iOS8中如何实现UISearchController?

iphone - View Controller 继承。找不到接口(interface)

ios - UIWebView 和 UIScrollView 滚动行为

objective-c - 如何调整 UIView 的大小并强制其 subview 调整大小

asp.net - 使用asp.net MVC分页搜索结果