6

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

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

4

1 回答 1

3

我最初不想这样做,但到目前为止它似乎没有问题(取自有问题的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;
}
于 2012-02-14T19:26:04.117 回答