Я сжег часы на этом. Я инициализировал UIPageViewController
с помощью UIPageViewControllerNavigationOrientationHorizontal
, но по какой-то причине viewControllerBeforeViewController
вызывается, когда пользователь перемещается по вертикали.
Кроме того, когда это происходит, перелистывание страниц не происходит и didFinishAnimating:didFinishAnimating:previousViewControllers:transitionCompleted
вообще не вызывается. Это означает, что контроллер просмотра страницы знает, что это вертикальное движение.
Это код инициализации -
- (void)initPageViewController
{
self.pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl
navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
options:nil];
self.pageViewController.delegate = self;
self.pageViewController.dataSource = self;
[self addChildViewController:self.pageViewController];
[self.view addSubview:self.pageViewController.view];
// Set the page view controller's bounds using an inset rect so that self's view is visible around the edges of the pages.
self.pageViewController.view.frame = self.view.bounds;
[self.pageViewController didMoveToParentViewController:self];
// Leave only pan recognizers enabled, so buttons positioned inside a page would work.
for (UIGestureRecognizer *gr in self.pageViewController.gestureRecognizers)
{
if ([gr class] != [UIPanGestureRecognizer class])
gr.enabled = NO;
}
}
Любые идеи?