我正在使用 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/