0

私は 2 つIBActionsをボタンに適用し、そのうちの 1 つはタッチダウンダウンで起動し、もう1 つはタッチアップで起動しますが、ダブルタップで起動するボタンにもタップ ジェスチャを適用しています。

NSLog何が起こっているのかを確認するために適用した結果、ダブルタップするとタッチダウンダブルタップの両方が発生します(幸いなことにタッチアップは発生しません)。タップ?

コード例

//fired on touch down 
-(IBAction)touchdown:(id)sender
{
    NSLog(@"touching down.");
}

//fired on touch up
-(IBAction)touchup:(id)sender
{   
    NSLog(@"taking off.");
}

//fired on double click
-(IBAction)boost:(UITapGestureRecognizer *)sender
{
    NSLog(@"goodbye.");
}
4

1 に答える 1

0

デリゲートをインポートし、<UIGestureRecognizerDelegate>

これはviewDidLoadメソッドで行ったと思いますが、

UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(boost:)];
tapGestureRecognizer.delegate = self;
tapGestureRecognizer.numberOfTapsRequired = 2;
[self.button addGestureRecognizer:tapGestureRecognizer];

タッチダウン座標に基づいて、このデリゲート メソッドを実装する必要があります。

  -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
    {
        CGPoint coords = [touch locationInView:self.button];
        NSLog(@"Coords: %g, %g", coords.x, coords.y);
        if (coords.y < 21 && coords.y > 25)
           return NO;
        else
           return YES;
    }
于 2013-10-16T09:59:42.760 に答える