6

マップの場所が変わるたびに呼び出される MKMapView とコードを含むアプリがあります (regionDidChangeAnimated 内)。アプリが最初にロードされると、マップ座標を明示的に更新するパン (スワイプ)、ピンチ、タップ、およびボタンで regionDidChangeAnimated が呼び出されます。他のビューをロードしてマップに戻った後、 regionDidChangeAnimated は、マップを明示的に更新するタップとボタンに対してのみ呼び出されます。マップをパンしてピンチしても、regionDidChangeAnimated が呼び出されなくなりました。

このスタックオーバーフローの投稿を見ましたが、この問題は解決しませんでした。devforumsおよびiphonedevsdkのフォーラム投稿も機能しませんでした。この問題の原因を知っている人はいますか? 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 に答える