不总是调用MKMapView regionDidChangeAnimated!

时间:2010-11-07 16:29:21

标签: iphone mkmapview

这令我很沮丧!!!

大部分时间都会调用它,但它会停止响应压缩。它将在屏幕旋转和双击时调用。不要紧张!

帮助!

5 个答案:

答案 0 :(得分:7)

我正在研究一些具有相同问题的代码,结果发现问题是UIGestureRecognizer的子视图已被添加为MKMapView的子视图,有时,它们会导致一些委托不要射击的方法。

因此,请确保您没有向MKMapView添加子视图或任何内容。

希望这有帮助。

答案 1 :(得分:3)

我在代码中移动地图,然后我需要调用

[mapView setNeedsDisplay];

!后

答案 2 :(得分:1)

我认为这个问题可能与多线程有关。

今天早上我遇到了同样的问题。我使用手势识别器捕获长按事件,然后将一个图钉添加到mapview。如果运作良好但经过几轮后,该区域确实改变了方法停止被调用。

我在这里尝试了一些解决方案但没有效果。然后我回想起之前我遇到的一些其他问题,即多线程性质的操作。所以我尝试将控制mapview的代码在长按操作中移动到在主线程中运行的块。问题解决了。

答案 3 :(得分:0)

我设法通过在touchesBeganCallback中禁用手势识别器来解决这个问题

self.tapInterceptor.touchesBeganCallback = ^(NSSet *touches, UIEvent *event) {
    self.tapInterceptor.enabled = NO;
    // do something
};

并在regionDidChangeAnimated委托方法

中重新启用它
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated {
    self.tapInterceptor.enabled = YES;
    // do something
}

答案 4 :(得分:0)

每当点击手势识别器添加到mapview,设置

recognizer.cancelsTouchesInView = NO;

如果您的业务逻辑允许在mapview上触摸进行双重处理(通过MKMapView和手势识别器),则可以解决问题 最近干扰该地区[Will,Did] ChangeAnimated:)