MKMapView 没有在 Pan 上调用 regionDidChangeAnimated

Posted

技术标签:

【中文标题】MKMapView 没有在 Pan 上调用 regionDidChangeAnimated【英文标题】:MKMapView Not Calling regionDidChangeAnimated on Pan 【发布时间】:2012-02-02 22:27:13 【问题描述】:

我有一个带有 MKMapView 和代码的应用程序,每次地图更改位置时都会调用该代码(在 regionDidChangeAnimated 中)。当应用程序最初加载时,在显式更新地图坐标的平移(滑动)、捏合、点击和按钮上调用 regionDidChangeAnimated。加载其他视图并返回地图后,仅在点击和显式更新地图的按钮时才调用 regionDidChangeAnimated。平移地图和捏不再调用 regionDidChangeAnimated。

我看过这个*** post 并没有解决这个问题。 devforums 和 iphonedevsdk 上的论坛帖子也不起作用。有谁知道是什么导致了这个问题?我没有向 MKMapView 添加任何子视图。

【问题讨论】:

【参考方案1】:

我最初不想这样做,但到目前为止它似乎没有任何问题(取自有问题的 devforums 帖子):

将 UIGestureRecognizerDelegate 添加到您的标题中。 现在添加版本号检查...如果我们在 ios 4 上,我们可以这样做:

 if (NSFoundationVersionNumber >= 678.58)

      UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchGestureCaptured:)];
      pinch.delegate = self;          
      [mapView addGestureRecognizer:pinch];

      [pinch release];

      UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureCaptured:)];
      pan.delegate = self;
      [mapView addGestureRecognizer:pan];

      [pan release];
 

添加处理手势的委托方法:

#pragma mark -
#pragma mark Gesture Recognizers

- (void)pinchGestureCaptured:(UIPinchGestureRecognizer*)gesture
    if(UIGestureRecognizerStateEnded == gesture.state)
         ///////////////////[self doWhatYouWouldDoInRegionDidChangeAnimated];
    


- (void)panGestureCaptured:(UIPanGestureRecognizer*)gesture

    if(UIGestureRecognizerStateEnded == gesture.state)
        ///////////////////[self doWhatYouWouldDoInRegionDidChangeAnimated];
    


-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
   return YES;


-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:   (UITouch *)touch
    return YES;


- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer   shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer    *)otherGestureRecognizer
    return YES;

【讨论】:

是的,我在使用 iOS 4 和 iOS 5 时遇到了问题,并且两者都适用。

以上是关于MKMapView 没有在 Pan 上调用 regionDidChangeAnimated的主要内容,如果未能解决你的问题,请参考以下文章

当我调用 setCoordinate 时,MKMapView 没有更新

MKMapView - 未调用 rendererForOverlay

未调用 mkmapview 委托方法 -calloutaccessorycontroltapped

没有锚的popover segue,MKMapView

UIView 内的 MKMapView 框架没有改变

在UICollectionViewCell中,setRegion对MKMapView没有影响