2012-02-16 9 views
0

私は漫画本のページを表示するためにUITapGestureRecognizerを利用しています。私はタップを取るときに、私が送っ:iOS - 最大タッチセットを設定する

[comicScrollView setContentOffset:CGPointMake(nextPageCGPoint) animated:YES]; 

- 言い換えれば、タップイベントで、私は、スクロールビューの次のページを表示するには、スクロールビューのオフセットコンテンツをアニメーション化。

問題はアニメーションが終了していない限り、別のタップジェスチャーがcontentOffsetに影響しないようにすることです。問題は、実際には、私はこれを非常に難しいと判断しました。コンテンツのオフセットを設定する前に、 "isAnimating"ブール値をYESに設定してから、コールバックでNOに設定しようとしました。私はアニメーションを設定しようとしました:完了: - しかし、タップが来るたびに、tapCountが増加します。

if ([touch tapCount] > 1) { [gestureRecognizer setEnabled:NO]; } 

それは後までジェスチャー認識を無効にしません:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { 
    NSLog(@"%d", [touch tapCount]); 
} 

は継続的に私はそれをタップし、私はその方法にこれを入れた場合と同じことが多いtapCountをインクリメントtapCountは&のインクリメントを終了してから0にリセットされました。

助けてください!そのブロックを使用して新しい方法で再実験し、方法:[UIViewのbeginAnimations]私は過去、私が使用したくなかった1

答えて

0
[UIView beginAnimations:@"AnimateIn" context:nil]; 
[UIView setAnimationCurve: UIViewAnimationCurveEaseOut]; 
[UIView setAnimationDuration: 0.7f]; 

//Add this 
[UIView setAnimationDelegate:self]; 

[UIView setAnimationDidStopSelector:@selector(loadingViewDisappear:finished:context:)]; 
loadingView.frame = CGRectMake(rect.origin.x, rect.origin.y - 80, rect.size.width, rect.size.height); 
[UIView commitAnimations]; 



- (void)loadingViewDisappear:(NSString *)animationID finished:(NSNumber *) finished context:(void *) context { 
    NSLog((finished ? @"YES!" : @"NO!")); 
    if ([animationID isEqualToString:@"AnimateIn"] && finished) { 
     //do something here 
    } 
} 
+0

正しいパスで私を設定してくれてありがとう - 私は[...アニメーション:完了:]メソッドをもう一度見て、私の2番目の投稿に記載されているように考え出しました。 – jankins

0

をインクリメントからtapCountを停止する方法を見つけ出すことはできません。私は&の前にこれを試しましたが、今回は別のことをしたことが分かりませんが、結果は好意的でした。

このメソッドを使ってscrollviewのcontentOffsetを設定すると、狂人のようにタップしている間はtapCountが増分されていても、ページは不適正な動作ではなくアニメーション化されています。あたかも別のアニメーションを付け加えるようにしているかのように。それはまさに私が求めている行動です。

-(void)singleTap:(UITapGestureRecognizer*)tapRecognizer { 

    CGPoint tapLocation = [tapRecognizer locationInView:self.view]; 

    //a tap on the right side turns to the next page: 
    if (tapLocation.x > self.view.frame.size.width/2) { 
     [UIView animateWithDuration:.3 animations:^{ 
      [comicScrollView setContentOffset:nextPagePoint]; 
     }completion:^(BOOL finished){ 
      NSLog(@"finished"); 
     }]; 
    } 
} 
関連する問題