2012-02-02 6 views
6

MKMapViewと、マップが場所を変更するたびに呼び出される(regionDidChangeAnimatedの)コードを持つアプリがあります。アプリが最初に読み込まれると、マップ座標を明示的に更新するパン(スワイプ)、ピンチ、タップ、ボタンでregionDidChangeAnimatedが呼び出されます。他のビューをロードしてマップに戻った後、regionDidChangeAnimatedはタップとマップを明示的に更新するボタンに対してのみ呼び出されます。地図をパンして挟むことで、もはやregionDidChangeAnimatedを呼び出すことはありません。MKMapViewがパンでregionDidChangeAnimatedを呼び出さない

私はこの問題を解決しなかったstackoverflow postを見ました。 devforumsiphonedevsdkのフォーラムの投稿も機能しませんでした。誰もがこの問題の原因を知っていますか? MKMapViewにサブビューを追加していません。

答えて

3

私は当初、このようにそれを行うにはしたくなかったが、今のところ問題なく動作しているように見えます(devforumsから取られたが、問題の投稿):

あなたのヘッダーにUIGestureRecognizerDelegateを追加します。

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]; 
} 

ジェスチャーを処理するためのデリゲートメソッドを追加します: は今、私たちはiOSの4にしている場合は、我々はこれを行うことができます...バージョン番号のチェックを追加

#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; 
} 
+0

意志でこの作品iOS 5についてはどうですか? –

+0

はい、私はiOS 4とiOS 5に問題があり、両方で動作します。 – brendan

関連する問題