2013-01-02 2 views
2

UIPageViewController 프로젝트의 첫 번째 페이지에서 작동하지만 다음 모든 페이지에서 작동하지 않는 UISwipeGestureRecognizer에 어려움이 있습니다.UIPageViewController 잃는 UISwipeGestureRecognizer

구성은 Apple의 PageViewController 샘플 코드를 기반으로합니다. 해당 UISwipeGestureRecognizer는 모든 페이지에서 올바르게 작동하는 스토리 보드와 UITapGestureRecognizer에 추가됩니다.

보기 컨트롤러에서 대상, 선택기,보기가 올바른지 확인했지만 이상한 항목을 찾을 수 없습니다.

누군가 비슷한 행동을 감지하고 해결책을 찾았습니까?

나는 스 와이프 제스처 인식기에 프로그래밍 방식으로 동일한 결과를 추가하려고했습니다.

+0

스 와이프 인식기를 페이지보기 컨트롤러의 콘텐츠 영역에서 사용 하시겠습니까? – Macondo2Seattle

+0

뷰 컨트롤러보기의 실제 부분 (데이터 소스에 의해 추가됨). –

답변

2

동일한 문제가있어서 두 가지 해결 방법이 있습니다.

1.이 방법을 사용하면 팬 및 스 와이프를 동시에 인식 할 수 있으며 원하는대로 수행 할 수 있습니다. 내가 위/아래로 스 와이프했을 때 페이지가 변경되는 것을 원하지 않았기 때문에 이것은 내가 원한 것이 아닙니다. 이 메서드의 경우 클래스를 스 와이프 제스처 인식기의 대리자로 만들어야합니다.

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 
{ 
    return YES; 
} 

2.이 방법은 슬쩍이 팬과 동시에 발생하지 않을 것이라는 점을 의미하는 와이프가 실패 알고까지가는 팬을 방지 할 수 있습니다. 당신의 swipes가 수직 인 경우에 수평 한 것 항상 항상 팬을 막을 것이기 때문에 이것은 믿을 만하다, 나는 믿는다.

//Cheat to get the pan gesture from the pageviewcontroller. You should iterate and make sure you get the right one. 
UIPanGestureRecognizer * panGR = self.pageViewController.gestureRecognizers[0];  

// Add the page view controller's gesture recognizers to the book view controller's view so that the gestures are started more easily. 
UISwipeGestureRecognizer * swipeGestureRec = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(openArchive:)]; 
swipeGestureRec.direction = UISwipeGestureRecognizerDirectionDown; 
[panGR requireGestureRecognizerToFail:swipeGestureRec]; 
[self.view addGestureRecognizer:swipeGestureRec]; 
swipeGestureRec = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(closeArchive:)]; 
swipeGestureRec.direction = UISwipeGestureRecognizerDirectionUp; 
[panGR requireGestureRecognizerToFail:swipeGestureRec]; 
[self.view addGestureRecognizer:swipeGestureRec]; 
관련 문제