2011-03-31 2 views
0

Je suis en train de détecter un long appui pour mettre une épingle sur la carte et son fonctionnement, j'ajoute une variable pinId que j'incrémente chaque fois que je lâche un point pour vérifier que seules deux broches sont tombées la même carte mais ici quelque chose ne fonctionne pas bien je suppose que je ne peux mettre qu'une seule épingle sur la carte!Dropping 2 broches avec robinet long

Voici le code:

-(void)handleLongPressGesture:(UIGestureRecognizer*)sender { 

if (sender.state == UIGestureRecognizerStateEnded) 

{ 

    [self.mapView removeGestureRecognizer:sender]; 

}else{ 
    if (pinId < 3) { 


     CGPoint point = [sender locationInView:self.mapView]; 

     CLLocationCoordinate2D locCoord = [self.mapView convertPoint:point toCoordinateFromView:self.mapView]; 


     MapAppAnnotation* annotation = [[MapAppAnnotation alloc]initWithCoordinate:locCoord andID:pinId]; 
     pinId++; 
     [mapView addAnnotation:annotation]; 
     [annotation release]; 

    }} 
} 

- (void)update{ 


UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPressGesture:)]; 

[self.mapView addGestureRecognizer:longPressGesture]; 


[longPressGesture release]; 

} 

- (void)viewDidLoad { 

[super viewDidLoad]; 
//... 

pinId = 1; 

self.update; 
} 
+0

Pouvez-vous vous assurer que votre partie d'autre est appelée la deuxième fois que vous effectuez une longue pression sur – visakh7

Répondre

1

A une supposition; c'est parce que removeGestureRecognizer est appelée après la première pression longue. Est-ce que cela fonctionne si vous supprimez cet appel?

+0

c'est juste merci –