2011-07-01 11 views
3

フルスクリーンサイズ(iPad、1024x768、ランドスケープモード)のUIScrollViewがあります。だから私はそれの上の任意の方向に2本の指でスワイプを認識する必要があります。私はそれが2のためだけでなく、動作するための条件にUIScrollViewでの2回のタッチによるスワイプの認識

if ([touches count] > 1) 

を追加する必要がありました

//MyViewController.h 
- (void)loadView { 
    mainScroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)]; 
    mainScroll.contentSize = CGSizeMake(1024*pageNumber, 768); 
    mainScroll.pagingEnabled = YES; 
    mainScroll.delegate = self; 
    [self.view addSubview:mainScroll]; 

    GestureRecognizer *tapInterceptor = [[GestureRecognizer alloc] init]; 
    tapInterceptor.numberOfTouchesRequired = 2; 
    tapInterceptor.direction = UISwipeGestureRecognizerDirectionUp | UISwipeGestureRecognizerDirectionDown | UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight; 
    [mainScroll addGestureRecognizer:tapInterceptor]; 
    mainScroll.userInteractionEnabled = YES; 
} 

//GestureRecognizer.h 
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    if ([touches count] > 1) 
     NSLog(@"Started"); 
} 

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
    if ([touches count] > 1) 
     NSLog(@"Moved"); 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    if ([touches count] > 1) 
     NSLog(@"Ended"); 
} 

(鉱石:それは私が持っているものだ(mainScrollは私のクラスのプロパティです)より多くの)触れるだけでなく、1つの。

しかし、スワイプ(2つのタッチ)は、まだ私のUIScrollViewをスクロールします。どうすればそれを防ぐことができますか?では、スクロールビューに何の影響も与えずにスワイプを認識するにはどうすればよいですか?

+2

ハハ。笑。タイトル !! – Legolas

+0

プログラミングの質問は何ですか?具体的にする。 – ryanprayogo

+0

質問:私のスクロールビューに何の影響も与えずにスワイプを認識するにはどうすればいいですか? – demon9733

答えて

2

UIGestureRecognizerのドキュメントは3次の各プロパティの良い説明を与える:

cancelsTouchesInView - ジェスチャー認識は、そのジェスチャーを認識すると、それは彼らの視界からそのジェスチャーの残りのタッチをアンバインド(そうウィンドウはそれらを配信しません)。ウィンドウは、(touchesCancelled:withEvent :)メッセージで以前に配信されたタッチをキャンセルします。ジェスチャ認識器がそのジェスチャを認識しない場合、マルチタッチシーケンスですべてのタッチを受け取る。

delaysTouchesBeganは - 限りタッチイベントを分析する場合、そのジェスチャの認識に失敗していないジェスチャ認識手段として、ウィンドウは、添付の図にUITouchPhaseBegan相でタッチオブジェクトの配信を保留します。その後、ジェスチャ認識装置がそのジェスチャを認識すると、ビューはこれらのタッチオブジェクトを受け取らない。ジェスチャ認識プログラムがそのジェスチャを認識しない場合、ウィンドウはビューのtouchesBegan:withEvent:メソッドの呼び出しでこれらのオブジェクトを配信します(場合によっては、touchesMoved:withEvent:呼び出しを呼び出して現在の位置に触れます)。

をdelaysTouchesEnded - 限りタッチイベントを分析する場合、そのジェスチャの認識に失敗していないジェスチャ認識手段、として、ウィンドウは、添付図にUITouchPhaseEnded相でタッチオブジェクトの配信を保留します。その後ジェスチャ認識プログラムがそのジェスチャを認識すると、タッチはキャンセルされます(touchesCancelled:withEvent:メッセージ)。ジェスチャ認識プログラムがそのジェスチャを認識しない場合、ウィンドウはビューのtouchesEnded:withEvent:メソッドの呼び出しでこれらのオブジェクトを配信します。

ここにはさらにUIGestureRecognizerがあります。

ジェスチャーが要求を満たさなくなるまでスクロールビューがタッチを受け取らないように(「IE」)、「delaysTouchesBegan」または「delaysTouchesEnded」が必要だと思っています。

関連する問題