Я хотел бы настроить навигационное поведение UIPageViewController
; в частности, я хотел бы перейти на разные страницы на основе , где на экране пользователь тащит палец. Любые указатели, с чего начать?Настройка поведения навигации UIPageViewController
ответ
Функция зависания контроллера просмотра страниц запускается с помощью UIPanGestureRecognizer
и UITapGestureRecognizer
. Их можно найти в объекте gestureRecognizers
.
В вашем методе pageViewController:viewControllerBeforeViewController:
и вашем методе pageViewController:viewControllerAfterViewController:
вы можете запросить распознаватель признака панорамы для своего местоположения в представлении контроллера просмотра страницы и использовать это, чтобы решить, куда перемещаться. Вероятно, вы захотите делегировать решение на отображаемый в данный момент контроллер.
static UIPanGestureRecognizer *panRecognizerOfPageViewController(UIPageViewController *pageViewController) {
for (id recognizer in pageViewController.gestureRecognizers) {
if ([recognizer isKindOfClass:[UIPanGestureRecognizer class]])
return recognizer;
}
return nil;
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
viewControllerBeforeViewController:(UIViewController *)vc
{
DetailViewController *dvc = (DetailViewController *)vc;
UIPanGestureRecognizer *panner = panRecognizerOfPageViewController(pageViewController);
CGPoint point = [panner locationInView:dvc.view];
return [dvc priorViewControllerWithPoint:point];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
viewControllerAfterViewController:(UIViewController *)vc
{
DetailViewController *dvc = (DetailViewController *)vc;
UIPanGestureRecognizer *panner = panRecognizerOfPageViewController(pageViewController);
CGPoint point = [panner locationInView:dvc.view];
return [dvc nextViewControllerWithPoint:point];
}
В моем тестировании мне нужно только спросить распознавателя жесты для своего местоположения. Когда жест представляет собой кастрюлю, оба распознавателя находятся в состоянии «Возможно». Когда жест является краном, распознаватель панорамирования находится в состоянии «Сбой», но в любом случае он сообщает местоположение касания.
Конечно, это не документированное поведение. Если вы не хотите полагаться на него, вам нужно получить доступ к местоположению текущего касания каким-либо другим способом. Я бы просто использовал подкласс UIWindow
и переопределил его sendEvent:
, чтобы сохранить последнее событие касания в переменной экземпляра для легкого доступа.
- 1. Отключить навигации UIPageViewController
- 2. Настройка страницы в UIPageViewController
- 3. UIPageViewController сдвигая вверх после навигации
- 4. Silverstripe Настройка поведения GridFieldExportButton
- 5. настройка поведения Jquery validate
- 6. Тонкая настройка поведения readline
- 7. Настройка поведения json_decode
- 8. iOS - UIPageViewController 'Не удалось определить направление навигации'
- 9. Не показывать панель навигации после появления UIPageViewController
- 10. Как прокрутить UIPageViewController из панели навигации
- 11. Настройка многопоточной вложенной формы поведения
- 12. Настройка UIPageViewController жест распознования Прокрутка поведение
- 13. Настройка содержимого в UICollectionView внутри UIPageViewController?
- 14. Liferay настройка портфолио навигации
- 15. Настройка навигации по Sharepoint
- 16. Настройка делегата контроллера навигации?
- 17. Настройка навигации SharePoint Breadcrumb
- 18. Настройка элементов навигации iOS
- 19. Настройка элементов навигации UIImagePickerController
- 20. Настройка кнопки навигации назад и окна навигации?
- 21. UIPageViewController внутри UIPageViewController
- 22. UIPageViewController * pageViewController = (UIPageViewController *) self.window.rootViewController;
- 23. Настройка навигации Элементы списка склеивать
- 24. Настройка меню навигации в Wordpress
- 25. Настройка активного пункта меню навигации
- 26. Настройка меню навигации в SilverStripe
- 27. Настройка UIBarButtonItem в панели навигации.
- 28. Как отображать кнопки на панели навигации в UIPageViewController?
- 29. iPad Ошибка с помощью раскадровки с контроллером uipageviewcontroller и навигации
- 30. UICollectionView под панелью навигации, когда отображается как страница в UIPageViewController
Спасибо! Я использую шаблон «Page на основе приложения», и я вложил его в свой «RootViewController: UIViewController». Он устанавливает себя как делегат в 'viewDidLoad':' self.pageViewController.delegate = self; '. Но '' UIViewController * pageViewController: (UIPageViewController *) pageViewController viewControllerAfterViewController: (UIViewController *) vc' метод, похоже, не срабатывает при повороте страницы. Любые указатели? –
Убедитесь, что 'dataSource' контроллера просмотра страницы подключен к объекту, который реализует' pageViewController: viewControllerAfterViewController: '. –
Супер, он работает! –