1

アプリにマップビューを実装しました。

didselectアノテーションメソッドを実装しました。

この方法では、ポップオーバーを開きます。正常に動作します。しかし、ポップオーバーが閉じられて注釈をもう一度クリックしようとすると、メソッドはそれ以上呼び出されません。

以前に選択した注釈以外の他の注釈をクリックすると、メソッドが呼び出されます。

私のコードは次のとおりです。

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)aView {



    ReadingDatabaseAppDelegate *appDelegate = (ReadingDatabaseAppDelegate *)[[UIApplication sharedApplication] delegate];

    if([self isPad])
    {
        detailsView *popUp=[[detailsView alloc] initWithNibName:@"detailsView_ipad" bundle:nil];


        popView = [[UIPopoverController alloc]initWithContentViewController:popUp];

        popView.delegate =self;

        [popView setPopoverContentSize:CGSizeMake(400, 400)];




        AnnotationImageView *myLocationImage = (AnnotationImageView *)aView;
        popUp.locationID = myLocationImage.locationID;

        NSLog(@"%d",popUp.locationID);

        popUp.list=listdata;
        detView.fromMapView = TRUE;

        if (appDelegate.preferenceRow == 1) {
            detView.title = @"ATM Details";
            popUp.isBranch = 0;
        }
        else {
            detView.title = @"Branch Details";
            popUp.isBranch = 1;
        }




        CGPoint annotationPoint = [mapView convertCoordinate:aView.annotation.coordinate toPointToView:mapView];
        float boxDY=annotationPoint.y;
        float boxDX=annotationPoint.x;
        CGRect box = CGRectMake(boxDX,boxDY,5,5);
        UILabel *displayLabel = [[UILabel alloc] initWithFrame:box];


        [popView presentPopoverFromRect:displayLabel.frame inView:mapView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
        [displayLabel release];



    }

}

**どうすればこれを解決できますか??**

4

1 に答える 1

10

ポップオーバーを閉じるときは、を使用して注釈の選択を解除し-deselectAnnotation:animated:ます。

于 2013-01-24T11:37:13.477 に答える