-1

申し訳ありませんが、これは繰り返しの質問ですが、私が見つけることができるすべての解決策を試しましたが、成功しませんでした.

とにかく、ここに私の問題があります。長押しジェスチャでタイマーを開始し、そのジェスチャがキャンセルされたとき、またはアクションが完了したときに停止する次のコードがあります。

-(void)photoLongPress:(UILongPressGestureRecognizer *)press
{
    NSTimer *timer = nil;

    if (press.state == UIGestureRecognizerStateBegan)
    {
        //Start timer
        timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(photoLongPressTimer:) userInfo:nil repeats:YES];
    }
    if (press.state == UIGestureRecognizerStateEnded)
    {
        [timer invalidate];
        timer = nil;
    }
}

-(void)photoLongPressTimer:(NSTimer *)timer
{
    DAProgressOverlayView *progress = (DAProgressOverlayView *)[self.view viewWithTag:kTagPhotoDeleteProgressIndicator];

    progress.progress += 0.08;

    if (progress.progress == 1)
    {
        [self deletePhotoSelection];
        [timer invalidate];
        timer = nil;
    }
}

メソッドで無効化するとタイマーは停止しますが、photoLongPressTimerメソッドでジェスチャが停止した場合は停止しませんphotoLongPress。これはなぜでしょうか?私は困惑しています。

ありがとう。

4

3 に答える 3