0

UIPageViewController를 사용하여 웹보기에서 10 개의 웹 페이지를로드하고 있습니다.UIPageViewController가 제대로 작동하지 않습니다.

모든 웹 페이지가 하나씩 올바르게로드되고 있습니다. 하지만 이상한 문제에 봉착했습니다.

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController 

바로 지금 제 1 페이지에 있습니다. 그래서 첫 번째 페이지를로드 한 후

- (UIViewController *)pageViewController:(UIPageViewController *) pageViewController viewControllerBeforeViewController:(UIViewController *)viewController 

로 돌아 가기의 가능성이없는, 그냥 위로 스크롤 아래로 웹보기로했다. 갑자기 viewControllerAfterViewController 메서드가 호출 중입니다. 이상한 점은 다음보기로 이동하지 않아서 (2 페이지)가로드되지 않았기 때문입니다.

무엇이 문제 일 수 있습니까?

+0

유사한 문제 여기에 설명 : http://stackoverflow.com/questions/12533240/uipageviewcontroller-gesture-is-calling-viewcontrollerafter-but-doesnt-animate – Lvsti

답변

1

잘 모르겠지만 문제는 제스처 인식기 또는 CGRects의 위치에 있다고 생각합니다. 기본적으로 페이지 뷰 컨트롤러는 터치 - 이동을 수신합니다. 따라서 사용자가 스크롤하면 (webView에서) 페이지 뷰는 페이지 넘김을 시도합니다. (나는 추측하고있다.) 해결책은 페이지 뷰 터치 위치 (CGRect)가 웹보기와 겹치지 않는지 확인하는 것이다. 분명히 당신은 UIPageViewController의 터치 위치 (지역)을 설정할 수 있습니다 "페이지를 켜을.

당신이보고 시작할 수 있습니다

"아이폰 OS 참조 라이브러리에서 "UIGestureRecognizer 클래스 참조. 나는이

도움이되기를 바랍니다 여기에 내가 거기에 무엇을 발견 :

locationInView : 는 수신기에 의해 표현 된 제스처의 주어진보기에서 위치로 계산 된 포인트를 돌려줍니다

  • (CGPoint) locationInView :. (UIView의 *)보기 매개 변수 보기 제스처가 발생한 UIView 개체입니다. 창을 표시하려면 nil을 지정하십시오. 반환 값 제스처의 위치를 ​​식별하는 로컬 좌표계의 지점. 뷰에 nil을 지정하면이 메서드는 윈도우의 기본 좌표계에서 동작 위치를 반환합니다.

토론 반환 값은 UIKit 프레임 워크에서 계산 된 제스처의 일반적인 단일 점 위치입니다. 일반적으로 제스처와 관련된 터치의 중심입니다. UISwipeGestureRecognizer 및 UITapGestureRecognizer 클래스의 객체의 경우이 메서드에서 반환하는 위치는 제스처에 특별한 의미가 있습니다. 이러한 중요성은 해당 클래스에 대한 참조에서 설명됩니다.

가용성 iOS 3.2 이상에서 사용할 수 있습니다. 원한다면 InView : 이 UIGestureRecognizer.h locationOfTouch 선언 : 원한다면 InView : 주어진보기의 로컬 좌표계의 제스처의 터치 중 하나의 위치를 ​​돌려줍니다 locationOfTouch - 또한 를 참조하십시오.

  • (CGPoint) locationOfTouch (NSUInteger) touchIndex를 원한다면 InView (하여 UIView *)보기 파라미터 touchIndex 을 상기 수신기에 의해 유지 된 전용 어레이 내의 UITouch 객체의 인덱스. 이 터치 객체는 현재 제스처의 터치를 나타냅니다. 보기 제스처가 발생한 UIView 개체입니다. 창을 표시하려면 nil을 지정하십시오. 반환 값 터치 위치를 식별하는 로컬 좌표계에서의 점. 뷰에 nil을 지정하면 메서드는 윈도우의 기본 좌표계에서 터치 위치를 반환합니다.

가용성 iOS 3.2 이상에서 사용할 수 있습니다. 관련 항목 - locationInView : 선언 UIGestureRecognizer.h 에서

+0

왼쪽 또는 오른쪽 맨 끝에서 탭하면 실제로 UIPageViewController가 스크롤됩니다. 그래서 다음 코드를 추가했습니다. (if ([인식기 isKindOfClass : [UITapGestureRecognizer 클래스]) { recognizer.enabled = NO; } } – Cyril

+0

이렇게하면 Tap 제스처를 피할 수 있습니다. 하지만 지금, 만약 내가 webview의 왼쪽에서 위아래로 스크롤을하면 viewControllerAfterViewController 메소드가 호출되고있다. – Cyril

관련 문제