2012-01-26 5 views
4

iPad iOS5 용 Xcode 4에서 페이지 기반 응용 프로그램을 만들었습니다.페이지 기반 응용 프로그램 및 제스처 인식기

앱을 실행할 때 책의 페이지를 볼 수 있으며 화면에서 탭을 누르거나 왼쪽에서 오른쪽 또는 오른쪽에서 왼쪽으로 손가락을 이동하여 앞뒤로 뒤집을 수 있습니다 ( ).

내 문제는 내가 화면에서 누르면 국경에 상관없이 페이지가 바뀌는 것입니다.

for (UIGestureRecognizer *gR in self.pageViewController.gestureRecognizers) 
{ 
    if ([gR isKindOfClass:[UIPanGestureRecognizer class]]) 
    { 
     [[gR view] removeGestureRecognizer:gR]; 
    } 
} 

어떻게 내가 그것을 누르라는 화면의 특정 영역을 정의 할 수 있으며, 만 페이지가 켜집니다 :

이 코드와 함께 손가락으로 플립을 취소하고 관리했다?

나는 툴바에 툴바를 놓았 기 때문에 내가 묻습니다. 툴바에서 버튼을 클릭하면 페이지가 뒤집습니다. 나는 화면에 두 개의 화살표를 넣고 싶습니다. 페이지를 넘기면 페이지가 넘깁니다.

죄송합니다. 내 설명에 녹슬지 않아서 죄송합니다. 다들 감사 해요.

답변

2

제스처 시스템에 연결하여 접촉을 허용 할 영역을 정의 할 수 있습니다. 이 설명에서

나는 당신의 RootViewController 아이의 VC로 UIPageViewController을 가지고 가정

- 설정하여 RootViewControllers ViewDidLoad을에 pageVC에 대한 모든 제스처 인식기를 통해 UIGestureRecognizerDelegate

-Take을 구현하는 루트 뷰 컨트롤러 :

for (UIGestureRecognizer *gR in self.pageVC.gestureRecognizers) { 
    gR.delegate = self; 
} 

- 마지막으로 RootViewController에 제스처 인식기를 구현하고 무시할 영역을 정의하십시오.

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]) { 
    CGPoint point = [touch locationInView:self.view]; 

    //Examine point and return NO, if gesture should be ignored. 

    } 
    return YES; 
} 

희망이

+0

정말 고맙습니다. 나중에 다시 시도하고 업데이트 해 드리겠습니다. – shlomi

+0

안녕하세요. Shlomi, 당신이 그걸 가져 와서 운영 할 수 있었습니까? – EsbenB

+0

네, 고마워요! – shlomi

4

Cipramill의 대답이 정확한지하는 데 도움이 - 여기에 자세한 내용입니다.

IOS 문서는 페이지 회전 제스처가 활성화되기를 원하는 영역을 묘사하기 위해 새로운보기를 추가 할 것을 제안하지만이 방법은 훨씬 간단합니다. MQ1RootViewController.h에

변경 인터페이스 라인 : MQ1RootViewController.h 및 MQ1RootViewController.m에서 엑스 코드 4가 설정 한 기본 템플릿에 코드를 추가하면

@interface MQ1RootViewController : UIViewController <UIPageViewControllerDelegate,  
    UIGestureRecognizerDelegate> 

는 MQ1RootViewController에있는 viewDidLoad의 맨 아래에이 코드를 추가합니다 하는 .m :

for (UIGestureRecognizer *gR in self.pageViewController.gestureRecognizers) { 
    gR.delegate = self; 
} 

이 MQ1RootViewController.m에이 방법을 추가

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 
    shouldReceiveTouch:(UITouch *)touch 
{ 

if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]] 
    || [gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) { 

    CGPoint point = [touch locationInView:self.view]; 

    if(point.x < 100 || point.x > 924) return YES; 

} 

return NO; 
} 

"스 와이프"제스처는 실제로 페이지 뷰 컨트롤러 개체에 의한 "팬"제스처에서 파생됩니다.

위 동작은 화면의 왼쪽 및 오른쪽 가장자리로 제스처를 제한합니다.이렇게하면 실수로 스 와이프하여 페이지를 변경하지 않고도 화면 가운데에있는 객체와 상호 작용하는 데 사용할 제스처를 사용할 수 있습니다.

관련 문제