2016-05-06 10 views

答えて

0

Aがスワイプを受け取るルートUIViewであり、Bがスワイプを本当に受信したくないAのサブビューであるとします。

  • あなたはB上の任意のジェスチャーを受信したくない場合は、あなたがそれ
  • 上userInteractionEnabled =偽できますが、まだいくつかのB上のジェスチャー(ただしスワイプ)を受信したい場合は

あなたはまた、あなたはジェスチャーを実装から機能の広い範囲を得ることができますどのように見ることができます

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { 
    if ([gestureRecognizer isKindOfClass:UISwipeGestureRecognizer]) { 
     return NO; 
    } 

    return YES; 
} 

Bでこのメソッドを実装できるように、Bのサブクラスを作成し、このメソッドを実装する必要があります認識:shouldReceiveTouch:

私はそれが助けて欲しい!

0

解決策の一つは、チェックすることですジェスチャー点は便利なCの関数がある 、あなたのサブビューの内側かではありません:

あなたはこのように使用することができます
/* Return true if `point' is contained in `rect', false otherwise. */ 
bool CGRectContainsPoint(CGRect rect, CGPoint point) 

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { 
    return CGRectContainsPoint(subview.frame, [touch locationInView:self.view]);; 
} 
0

他のソリューションは機能するはずですが、サブビューに独自のイベントハンドラがない場合は、subview.userInteractionEnabled = falseをサブビューに設定するほうが簡単です。

関連する問題