在我的应用程序中使用地图视图有时候MKMapKit委托方法'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%的时间表现得像理想(方法不要调用)。
有人可以帮我解决这个问题。
提前谢谢你。
答案 0 :(得分:0)
编辑它随机打破了,所以我现在再次调用该函数(撤消我在下面所说的内容),没有额外的更改......嗯,它有效。我觉得我正在翻硬币。
我刚刚发生这种情况,因为我有一个子类化的MKMapView。我不知道你是否继承了这个,但由于某种原因Apple的超级功能,例如: - (void)scrollViewDidScroll;称为超级,但没有被正确拦截并跳过那个电话。
当我删除“重写”调用时,这只是对[super scrollView]的调用,它开始正常工作。
我不知道为什么苹果的代码会被破坏(调用super不具有相同的效果而不会覆盖它),但请确保你没有对这些代码进行子类化: ScrollView功能 MKMapView功能...... 或者使用WildCard手势识别器非常友好地提供了地图视图为什么不响应touchesBegan / Moved等的答案:How to intercept touches events on a MKMapView or UIWebView objects?。
如果这没有帮助,请确保您没有其他视图之上的视图,不正确的代理,xib被安排和连接,通常的东西。