Map视图委托方法问题'mapView:regionDidChange:'不要调用

时间:2012-03-24 04:58:04

标签: ios4 mkmapviewdelegate

在我的应用程序中使用地图视图有时候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%的时间表现得像理想(方法不要调用)。

有人可以帮我解决这个问题。

提前谢谢你。

1 个答案:

答案 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被安排和连接,通常的东西。