Я использую UIPageViewContoller для создания книжного перелистывания страниц.Страницы моей книги на 18px уже всей ширины экрана iPhone и закреплены на левой стороне экрана.Рамка для представления моего UIPageViewController затем устанавливается на размер рамки этих страниц (ширина: 302, высота: 460).Я делаю это для того, чтобы в книге было несколько страниц, а поворот страницы должен выглядеть так, как будто она начинается с края текущей видимой страницы, точно так же, как в приложении iBooks.
Проблема, которую яу меня есть, если кто-то пытается перевернуть страницу с помощью панорамирования в крайнем правом углу экрана, после точки 302 пикселей, жест панорамирования не захватывается UIPageViewController и страница не переворачивается.Я видел, как многие пользователи пытались перевернуть страницу таким образом, поэтому я хотел бы исправить это, не меняя дизайн пользовательского интерфейса.
Я думаю, что я могу захватить UIPanGesture из области за пределами UIPageViewController.и передать его в UIPageViewController.Я успешно запечатлел жест панорамирования, используя вид изображения, который у меня есть в качестве фона всего вида, но я не могу понять, как передать жест в UIPageViewController для обработки поворота страницы.
- (void) viewDidLoad {
...
// Add a swipe gesture recognizer to grab page flip swipes that start from the far right of the screen, past the edge of the book page
self.panGesture = [[[UIPanGestureRecognizer alloc] initWithTarget:self action:nil] autorelease];
[self.panGesture setDelegate:self];
[self.iv_background addGestureRecognizer:self.panGesture];
//enable gesture events on the background image
[self.iv_background setUserInteractionEnabled:YES];
...
}
#pragma mark - UIGestureRecognizer Delegates
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
// test if our control subview is on-screen
if (self.pageController.view.superview != nil) {
if (gestureRecognizer == self.panGesture) {
// we touched background of the BookViewController, pass the pan to the UIPageViewController
[self.pageController.view touchesBegan:[NSSet setWithObject:touch] withEvent:UIEventTypeTouches];
return YES; // handle the touch
}
}
return YES; // handle the touch
}