2

付属のがありUIViewます。また、の中に複数UIPanGestureRecognizerのオブジェクトがあります。UIViewUISwipeGestureRecognizers

UIPanGestureRecognizerとはオブジェクトに関連付けUISwipeGestureRecognizersられています。

UIPanGestureRecognizerの特定の領域を完全に無視する方法、またはUIViewオブジェクトUISwipeGestureRecognizersを優先させてオーバーライドする方法はありますUIView's UIPanGestureRecognizerか?

4

3 に答える 3

4

あなたが欲しいのは...

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
     if(gestureRecognizer == myPanGesture) return NO;

     return YES;
}

または、そのデリゲートメソッドの同様の使用法。これは、UIGestureRecognizerDelegateプロトコルの一部です。これにより、スワイプしている場合にパンを認識できなくなります。

于 2012-08-01T19:16:01.657 に答える
2

このデリゲートメソッドを使用してこの問題を解決しました。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
      if ([touch.view isKindOfClass:[UIButton class]] && gestureRecognizer == recognizer) return NO;
      return YES;
}

私を正しい方向に向けてくれてありがとう@MikeS

于 2012-08-02T21:21:40.433 に答える
1

答えてくれてありがとう、それは私の問題で私を助けました。

私のソリューションを共有したいのは、それが役立つ可能性があるからです。

-(BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
NSLog2(@"Gesture on Class %@ tag %i", [touch.view class], touch.view.tag);////////

if (touch.view.tag == kTagToIgnoreGestures){
    return NO;
}
return YES;

}

ジェスチャを無視する必要があるビューのタグであるkTagToIgnoreGesturesを定義しました。このようにして、UIGestureRecognizerを使用してビューに2つのサブビューを含めることができ、そのうちの1つだけがジェスチャの影響を受けます。

それが役に立てば幸い。シェフィー

于 2012-10-18T12:14:52.350 に答える