2012-03-24 3 views
3

при одновременном использовании вида карты в моем приложении. Метод делегата MKMapKit' mapView: regionDidChange 'не вызывает. Это происходит только при перетаскивании карты. но когда я увеличиваю или уменьшаю его работу. Таким образом, его проблема создания связана с размещением новых аннотаций на карте при перетаскивании карты. меня сделать этот код в mapView:regionDidChange:Проблема с отображением метода делегирования карты mapView: regionDidChange: 'не вызывайте

int j=0; 

-(void) mapView:(MKMapView *)mapsView regionDidChangeAnimated:(BOOL)animated{ 

    zoomLevel = self.mapView.region.span.latitudeDelta; 

    if (![appDelegate internetConnected]){ 
     return; 
    } 

    if (appDelegate.isMapViewRegionChanged) { 
     if (j==0) { 
      j++; 
      return; 
     }else{ 
      j=0; 
      appDelegate.isMapViewRegionChanged = FALSE; 
      return; 
     } 
    } 
    [self callGetMapViewWithObject:nil]; 
} 


/* 
first boolean is to check Internet connection. 

[appDelegate internetConnected] 

Second condition is to return when we navigate from any view controller too map View controller. 

appDelegate.isMapViewRegionChanged 

Third is a method to place new annotations. 

[self callGetMapViewWithObject:nil]; 

*/ 

Я проверил все условия и булевы, но мое кодирование не является причиной этой ошибки. так может быть связано с регионом.

Таким образом, при использовании моего приложения с картой в 20% времени он ведет себя как Ideal (метод не звонит).

Может кто-нибудь помочь мне с этим.

Заранее спасибо.

+0

Любые мысли здесь? У меня такая же проблема ... – romrom

+0

такой же здесь. Я как бы избегал этого, ограничивая изменения аннотации. Я сейчас называю их в регионе, и это изменилось, чтобы этого избежать. – daxiangCODE

ответ

0

EDIT Это сломалось случайным образом, поэтому я теперь снова вызываю функцию (отменяя то, что я сказал ниже), никаких дополнительных изменений ... и um, она работает. Я чувствую, что я переворачиваю монету.

Я только что это произошло, потому что у меня есть подклассовый MKMapView. Я не знаю, если вы подклассифицируете это или нет, но почему-то суперфункции Apple, например: - (void) scrollViewDidScroll; называемый супер, но не был перехвачен должным образом и пропустил этот звонок.

Когда я удалил «переопределенный» вызов, это был просто вызов [super scrollView], он начал работать правильно.

Я не знаю, почему код яблока нарушается, что путь (вызов супер не имеет такой же эффект, не переопределяем), но убедитесь, что вы не наследуя эти: Scrollview функции функции MKMapView ... или, возможно, с помощью распознавателя жестов WildCard, предоставленного очень любезно, ответом на то, почему Map Views не реагируют на touchsBegan/Moved и т. Д. Здесь: How to intercept touches events on a MKMapView or UIWebView objects?.

Если это не поможет, убедитесь, что у вас нет представления поверх других видов, неправильных делегатов, xibs организованы и подключены, обычные вещи.

+0

Кажется, каждый раз, когда я меняю эту строку, код разрывается для одного прогона в симе ... затем прерывается после. Неважно, в каком направлении я его меняю. Извините, у меня нет особенностей устройства в отношении того, что это будет делать, кто-нибудь? –

Смежные вопросы