2012-04-26 3 views
2

Dans mon application, j'ai un tapGesture, panGesture, rotationGesture et pinchGesture. Le tapGesture est le point de départ de tous les gestes, il me montre, entre autres choses, quelle sous-vue est sélectionnée.Comment arrêter de manipuler des gestes

Après avoir entré un bouton pour gérer ImagePicker, la sous-vue est toujours sélectionnée et par conséquent, elle gère toujours les gestes.

Ma question: Y a-t-il des instructions pour arrêter de gérer les gestes?

EDIT

Je ne ai pas besoin du gestureRecognizer, donc je les mets inactifs:

panRecognizer.enabled = NO; 
pinchRecognizer.enabled = NO; 
rotationRecognizer.enabled = NO; 

Donc, si je besoin d'eux, je veux les faire travailler quand je suis la manipulation d'un tapRecognizer, mais ici le reconnaisseur ne passe pas d'inactif à actif.

[panRecognizer isEnabled]; 
pinchRecognizer.enabled = YES; 
rotationRecognizer.enabled = YES; 

EDIT

Mon point de vue est un ViewController et les sous-vues sont sur la imageView.
Les reconnaissances sont affectées à self.imageView.
Dans la première méthode que je désactiver la plage et dans la reconnaisseurs deuxième méthode que je leur permettre

- (IBAction)photo: (id) sender { 

    panRecognizer.enabled = NO; 
    pinchRecognizer.enabled = NO; 
    rotationRecognizer.enabled = NO; 

    UIImagePickerController* picker = [[UIImagePickerController alloc]init]; 
    picker.delegate = self; 
    picker.allowsEditing = NO; 

    @try { 

     picker.sourceType=UIImagePickerControllerSourceTypeCamera; 
     [self presentModalViewController:picker animated:YES]; 
    } 
    @catch (NSException * e) { 

     UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"Error" message:@"Camera is not available" 
                 delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease]; 
     [alert show]; 
    } 
    [picker release]; 
} 

- (IBAction)oneTap: (UIGestureRecognizer*)gestureRecognizer { 
    NSLog(@"oneTap"); 
    float differenz = 2000; 
    [panRecognizer isEnabled]; 
    pinchRecognizer.enabled = YES; 
    rotationRecognizer.enabled = YES; 

    for (UIView* const subview in array) { 
     subview.opaque = YES; 
     CGPoint const point = [gestureRecognizer locationInView:self.imageView]; 

      float zwischenS = sqrt(powf(point.x - subview.frame.origin.x,2)) + sqrt(powf(point.y - subview.frame.origin.y,2)); 


      if (differenz > zwischenS) { 

       differenz = sqrt(powf(point.x - subview.frame.origin.x,2)) + sqrt(powf(point.y - subview.frame.origin.y,2)); 
       newView.layer.borderColor = [[UIColor clearColor]CGColor]; 
       newView = subview; 

       subview.layer.borderColor = [[UIColor whiteColor]CGColor]; 
       subview.layer.borderWidth = 3.0f; 
       [imageView bringSubviewToFront: subview]; 
      } 
    } 
} 

Quelle est mon erreur?

Merci à l'avance

+0

Votre question est encore confuse. Pouvez-vous nous parler de votre hiérarchie de vues? À quelles vues les reconnaisseurs sont-ils affectés? Quelle est la fonction du système de reconnaissance gestuelle? – Sulthan

+0

regardez la mise à jour ci-dessous – Studie

Répondre

4

propriété [UIGestureRecognizer enabled]

+0

merci je l'ai changé à recognizer.enabled = NO; mais rien n'a changé – Studie

+0

C'était une réponse correcte à votre question comment arrêter de gérer les gestes. S'il vous plaît, mettez à jour votre question si ce n'est pas ce que vous voulez. – Sulthan

+0

votre réponse semble être correcte. Je travaille maintenant en transférant vos informations. Par conséquent vous avez le +1 – Studie

2
//YOU CREATE GESTURES LIKE THIS 
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] 
             initWithTarget:self action:@selector(handlePanGesture:)]; 

//YOU ADD THEM LIKE THIS 
    [self.view addGestureRecognizer:panGesture]; 

//AND YOU REMOVE THEM LIKE THIS 
    [self.view removeGestureRecognizer:panGesture]; 

Je ne sais pas comment vous codez les choses, mais j'espère que cela vous donne une idée

+0

Merci. Mais enlever complètement le geste n'est pas ma cible. Je veux réactiver le toucher lorsque je fais un tapGesture. – Studie

+0

dans votre question, de sorte que les reconnaisseurs fonctionnent parfaitement? alors vous les avez désactivés mais vous ne pouvez plus les activer? –

+0

Oui, c'est vrai, ils fonctionnent. Mais après les avoir désactivés, ils ne fonctionneront plus – Studie