2

を持つビューがありUIPanGestureRecognizerます。同じビューにはUIScrollView.

ユーザーが ScrollView をパンするgestureRecognizerShouldBegin:と、ScrollView のジェスチャ レコグナイザーがジェスチャを引き継ぐように、 で NO を返します。

しかし、私はまだgestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:メッセージを受け取ります。修正するのは簡単です。 で NO を返すだけでよいのですが、 で NO を返しgestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:た後にこのメッセージが表示されるのは正常かどうか疑問に思っていましたgestureRecognizerShouldBegin:

コード

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
    NSLog(@"gestureRecognizerShouldBegin:0x%x - return NO", (int)gestureRecognizer);
    return NO;
}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    NSLog(@"gestureRecognizer:0x%x shouldRecognizeSimultaneouslyWithGestureRecognizer:0x%x", (int)gestureRecognizer, (int)otherGestureRecognizer);
    return YES;
}

出力

2013-03-04 11:30:14.876 XXXX[99271:19d03] gestureRecognizerShouldBegin:0x9d6c380 - return NO
2013-03-04 11:30:14.876 XXXX[99271:19d03] gestureRecognizer:0x9d6c380 shouldRecognizeSimultaneouslyWithGestureRecognizer:0xbb75240
4

1 に答える 1

1

この行為はOKだと思います。gestureRecognizerShouldBegin:公式ドキュメントディスカッションのメソッドの次の参照から:

このメソッドは、ジェスチャ レコグナイザーがUIGestureRecognizerStatePossible状態から遷移しようとしたときに呼び出されます。NO を返すと、ジェスチャ レコグナイザーがUIGestureRecognizerStateFailed状態に遷移します。

これは、ジェスチャ レコグナイザを妨げないことを明確に示していますがUIGestureRecognizerStateFailed、それぞれのジェスチャ レコグナイザの状態に遷移します。したがって、他のデリゲート メソッドは通常どおり呼び出されます。

于 2014-08-14T09:39:01.117 に答える