2014-01-06 4 views
0

Я работаю над своим собственным жестом на карте. Он должен работать после долгого нажатия. Все в порядке, но после долгого жестяния прессы я двигаю пальцами, а карта следует за ними ... Мне нужно избегать этого. Я пробовал:Как вручную отменить стандартные распознаватели жестов MKMapView

self.mapView.userInteractionEnabled = NO; 

Но это, кажется, не работает ...

+0

возможно дубликат [Как отключить взаимодействие с пользователем на MKMapView?] (HTTP: // StackOverflow .com/questions/15418071/how-to-disable-user-взаимодействия-on-mkmapview) – Desdenova

+0

@Desdenova этот ответ не работает для меня. Знаки распознавания жестов работают в момент, когда я хочу их отменить ... – k06a

ответ

0

Рабочий путь. Соберите все работает на UIMapView жест распознавателей:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 
{ 
    if (gestureRecognizer == self.myLongPressGestureRecognizer 
     && otherGestureRecognizer != self.myPanGestureRecognizer) 
    { 
     if (self.otherGestureRecognizers == nil) 
      self.otherGestureRecognizers = [NSMutableSet set]; 
     [self.otherGestureRecognizers addObject:otherGestureRecognizer]; 
    } 
    return YES; 
} 

И отменить их всех, когда ваш жест распознаватель признал:

- (IBAction)measureLongPressed:(UILongPressGestureRecognizer *)recognizer 
{ 
    if (recognizer.state == UIGestureRecognizerStateBegan) 
    { 
     self.mapView.userInteractionEnabled = NO; 
     for (UIGestureRecognizer *gr in self.otherGestureRecognizers) 
     { 
      gr.enabled = NO; 
      gr.enabled = YES; 
     } 
     self.otherGestureRecognizers = nil; 

     [self myLongPressDetectedAndMapFreezed]; 
     return; 
    } 
} 
1

Отобрать распознования в то время как наш обычай self.measureGestureRecognizer пытается распознать жест:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 
{ 
    if (gestureRecognizer == self.measureGestureRecognizer) 
    { 
     if (self.otherGestureRecognizers == nil) 
      self.otherGestureRecognizers = [NSMutableSet set]; 
     [self.otherGestureRecognizers addObject:otherGestureRecognizer]; 
    } 
    return YES; 
} 

И когда мне нужно отменить все распознования жестов:

self.mapView.userInteractionEnabled = NO; 
for (UIGestureRecognizer *gr in self.otherGestureRecognizers) { 
    if (gr.enabled) { 
     gr.enabled = NO; 
     gr.enabled = YES; 
    } 
} 
Смежные вопросы