在将应用程序更新为对 iPhone 5 友好时,我不得不处理同样的问题。使用 iOS 6 sdk 编译时,问题出现在 iOS 6 上,但不在 iOS 5 上。仅在横向进入 PageViewController 时才会出现。
一种解决方法:
创建一个属性以将当前状态保存在 .m 的 @interface 部分中:
@property (strong, nonatomic) NSArray *viewControllersSave;
将 viewControllers 保存在willRotateToInterfaceOrientation
:
(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
// some code here...
self.viewControllersSave = self.pageViewController.viewControllers;
}
使用保存的属性而不是spineLocationForInterfaceOrientation
.
- (UIPageViewControllerSpineLocation)pageViewController: (UIPageViewController *)pageViewController
spineLocationForInterfaceOrientation: (UIInterfaceOrientation)orientation
{
// some code
NSArray *viewControllers = @[self.viewControllersSave[0]];
[self.pageViewController setViewControllers:viewControllers
direction:UIPageViewControllerNavigationDirectionForward
animated:YES
completion:NULL];
return UIPageViewControllerSpineLocationMin;
}
这可能是避免问题的一种可能性,但您应该向 Apple 提交错误报告以避免这种变通方法供以后使用。