2011-02-15 18 views
35

Me gustaría agregar algo de lógica cuando el usuario se mueve con la vista de mapa i. mi. él hace un toque pan. Pero cuando agrego el reconocedor de gestos y quiero registrar el tacto, no pasa nada. Cuando lo pruebo en otro controlador de vista y agrego el reconocedor a la vista del controlador, funciona bien.UIPanGestureRecognizer en MKMapView?

Aquí está mi código (ver mapa es una propiedad del delegado de aplicación, ya que tengo que hacer algunas otras cosas con él, incluso si no es visible):

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

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

utilizo último iOS 4.2.1

Gracias por cualquier consejo.

Respuesta

128

Ok, porque nadie lo sabía, tuve que pasar un soporte técnico de Apple para consultarlo. ; O)

Debido MKMapView evidentemente tiene sus propias reconocedores de interactuar con el usuario, usted tiene que cumplir con el protocolo UIGestureRecognizerDelegate e implementar (BOOL)gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer: así:

- (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; 
} 

entonces funciona como un encanto.

+1

Esto es exactamente lo que estaba buscando, ¡gracias! – Zebs

+7

+1 porque fue tan lejos como para pedirle al soporte técnico – Agos

+0

¡Dios mío! ¡Gracias, eso me hubiera tomado un tiempo darme cuenta! – n13