UIPageViewController
의 탐색 동작을 사용자 정의하고 싶습니다. 특히 을 기반으로 다른 페이지로 이동하려는 경우 화면에서 사용자가 손가락을 끕니다. 어디에서 포인터를 시작할 것인가?UIPageViewController의 탐색 동작 사용자 정의
0
A
답변
1
페이지 뷰 컨트롤러의 컬 탐색은 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. IMarker 동작 사용자 정의
- 4. Sitecore 탐색 사용자 정의?
- 5. 다중 UIPageViewController의
- 6. wpf 키보드 탐색 동작
- 7. 양식 동작 - 사용자 정의 URL
- 8. 사용자 정의 포맷터 이상한 동작
- 9. Datatable 사용자 정의 처리 동작
- 10. InfiniteScroll 및 사용자 정의 동작
- 11. TabHost의 버튼 동작 사용자 정의
- 12. 사용자 정의 레이아웃 이상한 동작
- 13. JQuery 아코디언 동작 사용자 정의
- 14. DataGrid의 사용자 정의 클릭 동작
- 15. 모든보기의 사용자 정의 탐색 모음
- 16. Halogy CMS의 사용자 정의 탐색
- 17. 사용자 정의 탐색 막대 android
- 18. SPNavigation - 사용자 정의 탐색 표시
- 19. 사용자 정의 탐색 이미지가있는 막대
- 20. OpenGL 사용자 정의 탐색/선택
- 21. 탐색 모음에 UIBarButtonItem 사용자 정의.
- 22. 포털의 탐색 모음 사용자 정의
- 23. UIImagePickerController의 탐색 항목 사용자 정의
- 24. SilverStripe의 탐색 메뉴 사용자 정의
- 25. 검도 그리드 사용자 정의 탐색
- 26. 사용자 정의 탐색 창은 오류
- 27. UIPageViewController의 위쪽 막대
- 28. UIPageViewController의 그림자
- 29. Wordpress 헤더 및 탐색 모음을 사용자 정의 PHP로 사용자 정의
- 30. JQuery 슬라이더 탐색 동작
고마워요! 나는 "페이지 기반 응용 프로그램"템플릿을 사용하고 있으며 이것을'RootViewController : UIViewController '에 붙여 넣었습니다. 그것은'viewDidLoad'에서 델리게이트로 자신을 설정하고 있습니다 :'self.pageViewController.delegate = self;'. 그러나'(UIViewController *) pageViewController : (UIPageViewController *) pageViewController viewControllerAfterViewController : (UIViewController *) vc' 메서드는 페이지 전환시 트리거되지 않는 것처럼 보입니다. 어떤 포인터? –
페이지 뷰 컨트롤러의'dataSource'가'pageViewController : viewControllerAfterViewController :'를 구현하는 객체에 연결되어 있는지 확인하십시오. –
최고, 작동합니다! –