UILongPressGestureRecognizer
fait déjà ce que vous voulez pour vous. Jetez un coup d'œil à la UIGestureRecognizerState
propriété. De la documentation :
Les gestes de pression longue sont continus. Le geste commence (UIGestureRecognizerStateBegan) lorsque le nombre de doigts autorisés (numberOfTouche) est atteint. (numberOfTouchesRequired) ont été pressés pendant la période spécifiée (minimumPressDuration) et que les touches ne dépassent pas la limite de l'espace libre. l'amplitude de mouvement autorisée (allowableMovement). La reconnaissance passe à l'état Change chaque fois qu'un doigt bouge, et s'arrête (UIGestureRecognizerStateEnded) lorsque l'un des doigts est soulevé. sont levés.
Donc, essentiellement après votre UILongPressGestureRecognizer
Le sélecteur est appelé, vous écoutez UIGestureRecognizerStateBegan, UIGestureRecognizerStateChanged, UIGestureRecognizerStateEnded. Continuez à changer le cadre de vos vues pendant UIGestureRecognizerStateChanged
.
- (void)moveRight:(UILongPressGestureRecognizer *)gesture
{
if(gesture.state == UIGestureRecognizerStateBegan)
{
//if needed do some initial setup or init of views here
}
else if(gesture.state == UIGestureRecognizerStateChanged)
{
//move your views here.
[yourView setFrame:];
}
else if(gesture.state == UIGestureRecognizerStateEnded)
{
//else do cleanup
}
}