1

マップ上で MKAnnotationViews をクリックすると、それらが一時的に前面に表示されます。他の機能を持たないマップ上の単なるアイコンである MKAnnotationViews がたくさんあるので、この動作は望ましくありません。

MKAnnotationView をuserInteractionEnabledに設定しようとしましNOたが、機能しません。MKAnnotationView は、タッチすると前面に表示されます。MKAnnotationView は単なる UIView であるため、これは紛らわしいので、なぜuserInteractionEnabled無視されているのかわかりません。

4

4 に答える 4

4

前の回答(およびドキュメント) で述べたように、注釈ビューのタッチを無効にするには、そのenabledプロパティを に設定できますNO


に設定canShowCalloutすることNOは、潜在的な代替手段です。didSelectAnnotationViewただし、(コールアウトが表示されなくても)およびdidDeselectAnnotationViewデリゲート メソッドが引き続き呼び出されるのを防ぐことはでき ません。状況によっては問題になる場合があります。

于 2012-09-12T13:34:07.770 に答える
2
 -(MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:
 (id <MKAnnotation>)annotation
{
MKPinAnnotationView *pinView = nil; 

//NSLog(@"my loc : %@",mapView.userLocation);

if(annotation != mapView.userLocation) 
{
    static NSString *defaultPinID = @"any";

    pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];

    if ( pinView == nil )
      {
        pinView = [[MKPinAnnotationView alloc]
                                      initWithAnnotation:annotation reuseIdentifier:defaultPinID] ;
      }
//this property may help you  

    pinView.canShowCallout = NO;
}
于 2012-09-12T12:28:53.037 に答える
0

ユーザー操作の MKPinAnnotationView *pinView または MKAnnotationView *annotationView プロパティを、作成したメソッドで NO に設定します。

-(MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:
 (id <MKAnnotation>)annotation{

static NSString *annotation = @"identifier";

   MKAnnotationView * aView = (MKAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];

    if ( aView == nil )
      {
        aView = [[MKAnnotationView alloc]
                                      initWithAnnotation:annotation reuseIdentifier:annotation] ;
      }
[aView setUserInteractionEnabled:NO];
}
于 2012-09-12T12:38:16.470 に答える