0

ビューの上にUIPanGestureRecognizerを使用してUIViewを追加しました。
ビューには、touchUpInsideイベントに応答するいくつかのUIButtonがあります。
奇妙なことに、UIPanGestureRecognizerを持ってきてから、パンするときにUIButtonが「パンビュー」の真下にあると、ボタンがトリガーされますが、これは私が求めているものではありません。もちろん、ボタンが起動しないように「パン」のBOOLフラグを作成することもできますが、エンジニアリングが悪いように思え、確かに何かが欠けています。最初のタッチの後、両方のビューがイベントをインターセプトすると思います。
これを克服することは可能ですか?

ありがとう

4

3 に答える 3

1
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 
       shouldReceiveTouch:(UITouch *)touch {

    if ([touch.view isKindOfClass:[UIButton class]]) {
        return NO;
    }
    return YES;
}

この方法を使用して、アクトンを区別GestureRecognizerButtonます。

これがお役に立てば幸いです。

于 2012-11-26T04:17:45.560 に答える
0

これが役立つかどうかわからない

[[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanned:)];
- (void)handlePanned:(UIPanGestureRecognizer*)thePanner{

    if (thePanner.state == UIGestureRecognizerStateChanged ){
       //disable button 
    }else if (thePanner.state == UIGestureRecognizerStateEnded) {
        //enable button
    }else if ( thePanner.state == UIGestureRecognizerStateFailed ){
     //enable button
    }
}
于 2012-11-26T03:11:00.057 に答える
0

次の 2 つの方法で問題を解決できます。

1)必要なビューにジェスチャを追加するときは、不要なビューに追加されないように注意してください。この場合はUIButton、&;です。

2)ジェスチャを検出するケースを処理するメソッド/デリゲートで、つまり、ジェスチャが何を行うかを実装する前に、これが UIButton ではないことを保証します。

もしよろしければ、サンプルコードを試してみます。

良い一日をお過ごしください。:)

于 2012-11-26T04:00:40.390 に答える