MKMapView未在Pan上调用regionDidChangeAnimated

bre*_*dan 6 tap pan swipe mkmapview ios

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

我看过这个没有解决这个问题的stackoverflow帖子.关于devforumsiphonedevsdk的论坛帖子也没有用.有谁知道这个问题的原因是什么?我没有向MKMapView添加任何子视图.

bre*_*dan 3

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

将 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];
 }
Run Code Online (Sandbox Code Playgroud)

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

#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;
}
Run Code Online (Sandbox Code Playgroud)