1

touchesMovedでスライドモーションをすでに検出できますが、スライドを検出して、スライドが停止したときに指がまだ画面上で押されていることを検出する方法を知りたいと思っていましたか?

これまでの私のコードは次のとおりです。

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{

if(self.tutorialView.alpha != 1.0 || self.tutorialView.hidden)
{

UITouch *touch = [touches anyObject];
CGPoint gestureEndPoint = [touch locationInView:self.view];

int dx = abs(gestureStartPoint.x - gestureEndPoint.x);
int dy = -1 * (gestureEndPoint.y - gestureStartPoint.y);

if(dx > 20) {
    // too much left/right, so don't do anything
    return;
}

if((gestureStartPoint.x - gestureEndPoint.x) < 20 && (gestureStartPoint.x - gestureEndPoint.x) > -20)
{

    if((gestureStartPoint.y - gestureEndPoint.y) > (gestureStartPoint.x - gestureEndPoint.x))
    {

        if(dy > 0)
        {

            // User has made an upwards slide motion

        }

        else
        {

            // User has made a downwards slide motion

    else
        self.number = 0;

    }

    }

}

}

}
4

2 に答える 2

4

古いタイマーをtouchesMoved無効にして新しいタイマーを作成すると、「ストップモーションが検出されました」セレクターが起動します。

このようなもの

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
     //NSTimer *_timer; // as an iver
    if (/* check move distance, if big enough */) {
        [_timer invalidate];
        _timer = [NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(slideStopped) userInfo:nil repeats:NO];
    }
}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
     [_timer invalidate]; // you may handle touch up differently and don't want slideStopped get called
     _timer = nil;
}

- (void)slideStopped {
    // handle slide stopped event
}
于 2013-02-09T13:14:18.753 に答える
0

モーションが停止すると、次のメソッドが呼び出されます。だから、ここでそれを追跡することができます。

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)イベント

于 2013-02-06T09:14:15.963 に答える