2011-02-15 7 views
35

Vorrei aggiungere qualche logica quando l'utente si sposta con la vista mappa i. e. lui fa un tocco di padella. Ma quando aggiungo il riconoscimento dei gesti e voglio registrare il contatto, non succede nulla. Quando provo in un altro controller di vista e aggiungo il riconoscimento alla vista del controller, allora funziona bene.UIPanGestureRecognizer su MKMapView?

Ecco il mio codice (guarda la mappa è una proprietà di delegato applicazione perché ho bisogno di fare alcune altre cose con esso, anche se non è visibile):

- (void)viewDidLoad 
{ 
    ... 
    UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(showPan)]; 
    [appDelegate.mapView addGestureRecognizer:panGesture]; 
    [panGesture release]; 
} 

- (void)showPan 
{ 
    NSLog(@"pan!"); 
} 

Io uso ultimo iOS 4.2.1

Grazie per qualsiasi consiglio.

risposta

128

Ok, perché nessuno lo sapeva, ho dovuto spendere una consulenza di supporto tecnico Apple per questo. ; O)

Perché MKMapView evidentemente ha i propri sistemi di riconoscimento per interagire con l'utente, è necessario aderire al protocollo UIGestureRecognizerDelegate e implementare (BOOL)gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer: come questo:

- (void)viewDidLoad 
{ 
    ... 
    UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(showPan)]; 
    panGesture.delegate = self; 
    [appDelegate.mapView addGestureRecognizer:panGesture]; 
    [panGesture release]; 
} 

- (void)showPan 
{ 
    NSLog(@"pan!"); 
} 

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { 
    return YES; 
} 

allora funziona come un fascino.

+1

Questo è esattamente quello che stavo cercando, grazie! – Zebs

+7

+1 perché sei andato a chiedere al supporto tecnico – Agos

+0

Buon Dio - grazie, mi ci sarebbe voluto un po 'per capire! – n13