UIPageViewController在旋转时重置为第一页

时间:2013-01-03 02:04:59

标签: iphone objective-c ios ipad uipageviewcontroller

当用户旋转设备时,UIPageViewController将从显示的任何页面淡出到第一页。这真的很烦人,尤其是当用户将多个页面放入文档时。它只发生在iOS 6中。

当用户旋转设备时,会调用spineLocationForInterfaceOrientation,这可能与问题有关。

- (UIPageViewControllerSpineLocation)pageViewController:(UIPageViewController *)pageViewController
               spineLocationForInterfaceOrientation:(UIInterfaceOrientation)orientation {

    return UIPageViewControllerSpineLocationMin;

}

我总是希望脊柱在左边。

您是否知道导致UIPageViewController重置的原因是什么?我发现了一个错误报告here,但我无法在网上找到任何其他信息,让我觉得我做错了。

2 个答案:

答案 0 :(得分:2)

我不知道存在这样的错误,但最糟糕的情况是,您可以覆盖

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration;
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation;

捕获旧状态并在转换完成后重新设置它。我很想相信还有其他因素导致了这个问题,但是如果没有更多的数据,我无法分辨。你可以发布更多的UIPageViewController代码吗?

答案 1 :(得分:2)

您的spineLocationForInterfaceOrientation不完整

它应该是这样的:

- (UIPageViewControllerSpineLocation)pageViewController:(UIPageViewController *)pageViewController
                   spineLocationForInterfaceOrientation:(UIInterfaceOrientation)orientation
{

        UIViewController *currentViewController = self.pageViewController.viewControllers[0];
        NSArray *viewControllers = @[currentViewController];
        [self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:NULL];

        return UIPageViewControllerSpineLocationMin;

}