0

2 つのジェスチャ認識機能を備えた UIView があります。どちらも 2 本の指でのタップを認識します。1 本は画面の上半分、もう 1 本は画面の下半分です。その UIView には、画面全体をカバーする 4 つのボタンがあります (各ボタンは画面の 4 分の 1 です)。

ユーザーが2つのボタンを同時に押したときを検出するためにジェスチャー認識エンジンを使用していますが、ボタンの通常のタッチを認識したいと考えています。

私はすべてをセットアップしました、そしてそれはうまくいきます。ただし、1 本の指だけで押すと、ボタンの影はタッチダウンではなくタッチアップで表示されます。そして、それは奇妙に感じます。delaysTouchesBegan を変更しようとしましたが、成功しませんでした。

両方の動作を持つ方法はありますか?2 本の指でタッチを検出しますが、指が 1 本しかないときに「通常の動作」をしますか? それ以外の場合、UIbutton の押された状態を強制できますか?

ジェスチャをセットアップする方法は次のとおりです。

-(void)initGestureRecognition{
    handClapTapGestureRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handClapDetected:)];
    handClapTapGestureRecognizer.numberOfTouchesRequired = 2;
    handClapTapGestureRecognizer.numberOfTapsRequired = 1;
    handClapTapGestureRecognizer.cancelsTouchesInView = YES;
    [self.gestureRecognitionView addGestureRecognizer:handClapTapGestureRecognizer];
    handClapTapGestureRecognizer.delegate = self;


    jumpTapGestureRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(jumpDetected:)];
    jumpTapGestureRecognizer.numberOfTouchesRequired = 2;
    jumpTapGestureRecognizer.numberOfTapsRequired = 1;
    jumpTapGestureRecognizer.cancelsTouchesInView = YES;
    [self.gestureRecognitionView addGestureRecognizer:jumpTapGestureRecognizer];
    jumpTapGestureRecognizer.delegate = self;
}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{

    return NO;
}


- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
    if ([gestureRecognizer isEqual:handClapTapGestureRecognizer] && [touch locationInView:self.view].y > self.view.frame.size.height/2)
        return NO;
    if ([gestureRecognizer isEqual:jumpTapGestureRecognizer] && [touch locationInView:self.view].y < self.view.frame.size.height/2)
        return NO;

    return YES;
}

私の問題は、UITapGestureRecognizer を持つビュー内の UIButton に似ていますが、違いは、私の場合、動作は問題なく、Touch DOWN のボタンに影を付けようとしているだけです。タッチアップよりも。

ありがとう

4

1 に答える 1

1

[button setHighlighted:YES]タップ ジェスチャが最初に認識され、その位置がボタンの位置と一致するNOタイミングと、ジェスチャが終了するタイミングを手動で設定できますか?

于 2013-09-24T10:25:56.950 に答える