0

私はビューに2つのジェスチャーを追加しています。 1つはタップジェスチャーで、もう1つはスワイプジェスチャーです。ユーザーがビューをスワイプしようとするたびに、ジェスチャーメソッドが呼び出されます(タップジェスチャーが検出されます)。理由は何でしょうか?この場合、タップジェスチャーは無視されます。同じビューのMultipleGesture

以下はコードです。

UISwipeGestureRecognizer *swipeGest = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(itemSwiped:)]; 
swipeGest.direction = UISwipeGestureRecognizerDirectionUp ; 
[messageView addGestureRecognizer:swipeGest]; 

UITapGestureRecognizer *gest = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(itemSelected:)]; 
[messageView addGestureRecognizer:gest]; 

答えて

0

同じ表示で複数のジェスチャーを使用しているためです。例:最初のジェスチャ認識はジェスチャ(この場合はタップ)を認識し、すべてのタッチイベントをキャンセルします。したがって、残りのジェスチャレコグナイザは決して認識を終了せず、決してイベントを発生させません。

同じビュー上に複数のUIGestureRecognizerを追加するためには、デリゲートのプロパティ(UIGestureRecognizerDelegate)を設定する必要があり

yourGesture.delegate = self 

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 
     shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{ 


if (gestureRecognizer isKindOfClass: [UISwipeGestureRecognizer class] || gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]) { 
      return YES 
     } else { 
      return NO 
     } 
} 
+0

この場合、TapGestureを無視します。 – Aashish

0

他のジェスチャー

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{ 

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

      [otherGestureRecognizer requireGestureRecognizerToFail:gestureRecognizer]; 
      return false; 
     }else if([gestureRecognizer isKindOfClass:[UISwipeGestureRecognizer class]]){ 
      [otherGestureRecognizer requireGestureRecognizerToFail:gestureRecognizer]; 
      return false; 
     } 

     return true; 

    } 
+0

まだ動作していません。 – Aashish

0

てみてくださいを避けるために使用し、このデリゲートメソッドこの;

UISwipeGestureRecognizer *swipeGest = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(itemSwiped:)]; 
swipeGest.direction = UISwipeGestureRecognizerDirectionUp ; 
[messageView addGestureRecognizer:swipeGest]; 

UITapGestureRecognizer *gest = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(itemSelected:)]; 
gest.numberOfTapsRequired = 1; 
[messageView addGestureRecognizer:gest]; 


-(void)itemSwiped:(UISwipeGestureRecognizer*)gesture 
{ 
    NSLog(@"swipe"); 
} 

-(void)itemSelected:(UITapGestureRecognizer*)gesture 
{ 
    NSLog(@"tap"); 
} 
0

シングルタップをダブルタップジェスチャーに変更します。あなたは、ユーザーがダブルタップまたはスワイプすることだけを確認することができます。私からのアドバイスはそれに従ってください。

関連する問題