2012-11-28 25 views
7

私はカスタムは私は以下のリンクからこれらのクラスを抽出しているCalloutMapAnnotationView.hとCalloutMapAnnotationView.mカスタムコールアウトはios6で正しく表示されませんか?

これらのクラスを使用していますmkmapviewに呼び出す実装したいと

https://github.com/asalom/Custom-Map-Annotation-Callouts/blob/master/Classes/CalloutMapAnnotationView.h

https://github.com/asalom/Custom-Map-Annotation-Callouts/blob/master/Classes/CalloutMapAnnotationView.m

これらはios5ではうまく動作しますが、ios6ではコールをクリックしているときにマップビューが動いていて、下の図に示すように正しく表示されませんotが正しく来て、私はosのバージョンをチェックすることによってこの問題を取り除くためのいくつかの方法を試し、クラスの中のいくつかのメソッドを変更しようとしましたが、使用しませんでした。この1つはiOS5を中などの適切来ないIos6でこの enter image description here

のように来てiOS5をマップビューでこれらを実装した後

。例えば enter image description here

答えて

5

私はあまりにもこれらのクラスを使用してiOS 6で同じ問題に直面しました。これらの変更は、私の仕事:

この方法では1)変更:

あなたが行の順序を次のようにマップビュークラス

(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView*)view 

に実装します。この方法

self.selectedAnnotationView = view; 

[self.mapView addAnnotation:self.calloutAnnotation]; 

2)CalloutMapAnnotationView.mファイル

- (void)adjustMapRegionIfNeeded in this method first 5 lines like bellow 

    CGFloat xPixelShift = 0; 

    if ([self relativeParentXPosition] < 38) { 

     xPixelShift = 38 - [self relativeParentXPosition]; 

    } else if ([self relativeParentXPosition] > self.frame.size.width - 38) { 

    xPixelShift = (self.frame.size.width - 38) - [self relativeParentXPosition]; 

    } 

3)同じクラスCalloutMapAnnotationView.mにおいて - 同じクラスCalloutMapAnnotationView.mでCGFloat parentX = [self relativeParentXPosition];

行の後、この方法で(void)drawRect:(CGRect)rect上記rect = self.bounds;このライン 追加次の行

if ([self relativeParentXPosition] < 38) { 

     parentX = 38; 

    } else if ([self relativeParentXPosition] > self.mapView.frame.size.width - 38) { 

     parentX = [self relativeParentXPosition]-25; 

    } 

4)。

- (void)didMoveToSuperview { 
     [super didMoveToSuperview]; 
     [self.superview bringSubviewToFront:self]; 
    } 

あなたは、彼らが5 &のiOSは6 あなたはあなたの要件に応じて必要な変更を行う必要があり、両方のiOSで問題なく動作し、直接上記のクラスを使用し、それらを使用することができます。

+0

ありがとう、このソリューションも私を助けました。 –

+0

それは本当に助けになった素晴らしい答え。ありがとう、相棒。 –

+0

hello ios rider – 08442

-2

ちょうどそれはnsstringタイトルとnstringサブタイトルを追加することができます。 _nameはどのタイトルが必要ですか。

- (NSString *)title { 
    return _name; 
} 
- (NSString *)subtitle { 
    return [NSString stringWithFormat:@"%f, %f", _coordinate.latitude, _coordinate.longitude]; 
} 
+0

これはまったく尋ねられることではありません –

関連する問題