4

ScrollView には、いくつかの SubViews があります....
ScrollView には、定義済みのジェスチャ (Pan) とカスタム ジェスチャ (Pan) も含まれており、同時に認識されます...
SubViews には、カスタムの Pan Gesture も含まれています...
すべてが機能していますサブビューでパンジェスチャを除いて問題
ありません...サブビューでパンを行っているときに、そのスーパービューもタッチして不要なものを処理しています...
サブビューでパンが行われている場合、スーパービューはそれらを認識しないでください.. .
SubView ジェスチャをその SuperView に渡すのをブロックするにはどうすればよいですか?

4

2 に答える 2

9

スーパービューがジェスチャに応答しないようにブロックするには、タッチポイントの下にサブビューがある場合、次のように実行できます。

UIGestureDelegateの次のメソッドを実装します

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;

なので

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    return  (touch.view == superView);
}

このデリゲートをsuperViewに割り当てられたgestureRecognizerに設定します。

これで必要なことができるといいのですが。

于 2013-03-16T10:10:55.740 に答える
0

基本的に、サブビューをクリックすると、スーパービューがサブビューと重なるため、スーパービューのジェスチャーが認識されません。

.h にデリゲートを追加して、tapGestures に渡し、次のように条件を指定します

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    if([gestureRecognizer.view isKindOfClass:[superView class]])
        return NO;
    else
        return YES;
}
于 2013-03-16T10:04:39.213 に答える