9
votes

Méthode pour rendre l'uigesturez-vous-même échouer après avoir été reconnu?

J'ai une question qui pourrait sembler fondamentale mais ne peut pas le comprendre.

question de base est: comment mettre un geste-à-question de manière programmée dans l'état d'échec du gestionnaire, tandis que c'est dans Uigesurerecognizerstatebegan ou uigestureConfortère?

Explication plus détaillée: J'ai une longue pression sur le geste de la presse pour UIView à l'intérieur d'un Uiscrollview. J'ai fabriqué xxx

car sinon je ne peux pas obtenir la vue de défilement pour faire défiler une fois que l'utilisateur met son doigt à la vue. C'est une touche de base comme un safari, où vous maintenez le doigt sur un lien, qui met en évidence le lien, mais faites défiler vers le haut ou le bas - alors le lien est immobile et ScrollView déplace.

Je peux l'obtenir surtout en ce moment. Les deux gestes sont reconnus, mais il serait préférable que je puisse détecter les mouvements dans la statisteanged de longue date de Gesurerecognizer de longue date, et s'il s'agit de plus de 20 pixels, il suffit de faire échec de manière programmatique.

Est-ce que cela est possible de faire? Ou suis-je creusé à un mauvais endroit?


0 commentaires

3 Réponses :


6
votes

Une autre question que j'ai trouvée juste après avoir posté la question.

Voici ce que je fais dans le gestionnaire de reconnaissance de geste maintenant: xxx

donc si le doigt se déplace plus Plus de 25 pixels dans n'importe quelle direction, le réglage de la propriété compatible à NON rendra l'échec du reconnaissance. Donc, cela accomplira ce que je veux!


1 commentaires

En définissant l'expéditeur.enable à oui, juste après le régler à Non, faites-vous quelque chose? Le mettre à ne semble rien faire ici. Voulez-vous vouloir placer l'expéditeur.enable à Oui avant la déclaration IF?



4
votes

S'il s'agit d'un uilongresseuerecognizer , il suffit de définir son allowableMovement Propriété. XXX


0 commentaires

2
votes

Selon la documentation, vous pouvez sous-classement vous GESTURE RECONNISER:

dans votrePangESTurerecognizer.M: P>

YourPanGestureRecognizer *panRecognizer = [[YourPanGestureRecognizer alloc] initWithTarget:self action:@selector(panMoved:)];
[self.view addGestureRecognizer:panRecognizer];
[...]
-(void) panMoved:(YourPanGestureRecognizer*)sender {
    [sender cancelGesture]; // This will be called twice
}


0 commentaires