UIGestureRecognizerDelegate メソッドを実装する必要があります。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer;
そして、コントローラーをジェスチャ認識エンジンのデリゲートとして追加します。次に、2 つのジェスチャ レコグナイザーがジェスチャに応答すると、このメソッドが呼び出され、ここでアプリに必要なロジックを実装できます。
コントローラーのインターフェイス宣言では、次のように入力する必要があります。
@interface testcViewController () <UIGestureRecognizerDelegate>
次に、ジェスチャ認識エンジンを作成するとき:
UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipe)];
swipe.direction = UISwipeGestureRecognizerDirectionDown;
swipe.delegate = self;
[self.view addGestureRecognizer:swipe];
そして最後に、このメソッドをコントローラーに追加します。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
BOOL shouldInteract = NO;
//Here you decide whether or not the two recognizers whould interact.
return shouldInteract;
}
EDIT
実装することもできます
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer;
ここで、サブビューを既に表示しているかどうかを検出し、必要なジェスチャをブロックします。