mapView:didAddAnnotationViews:没有响应

时间:2011-03-09 07:55:23

标签: objective-c cocoa delegates mkmapview

我目前正在阅读iPhone编程The Big Nerd Ranch指南,并在第96页遇到一些问题。

我已正确分配了MKMapViewDelegate(经过多个委托测试),每个代表都会对所做的更改做出响应。但在这个代表期间:

- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views
{
    MKAnnotationView *annotationView = [views objectAtIndex:0];

    id<MKAnnotation> mp = [annotationView annotation];

    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance([mp coordinate], 250, 250);
    [mv setRegion:region animated:TRUE];
    NSLog(@"Test");
}

控制台应在添加注释时记录该信息。但不知何故,它不会运行上述方法。

这是主文件

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    locationManager = [[CLLocationManager alloc] init];
    [locationManager setDelegate:self];

    [locationManager setDistanceFilter:kCLDistanceFilterNone];
    [locationManager setDesiredAccuracy:kCLLocationAccuracyBest];

    //[locationManager startUpdatingLocation];
    [mapView setShowsUserLocation:TRUE];

    [self.window makeKeyAndVisible];

    return YES;
}

我想知道哪一部分是错的。 [mapView setShowUserLocation:TRUE]是否向地图添加注释?如果是,那怎么没有上述方法的反应呢?

2 个答案:

答案 0 :(得分:1)

这是因为你还没有添加注释!显示用户位置的蓝色指示符不会被归类为注释。您可以通过简单地将红色图钉放到地图视图上来添加注释(触摸并按住地图)。

如果您想以编程方式为地图视图创建自己的注释,建议您先查看MKMapView class reference documentation中的“注释地图”部分并查看MKAnnotation protocol reference(如果您我不熟悉协议我强烈建议您也阅读这些协议!)您可以使用符合此协议的类MKPinAnnotationView的实例,并且可以使用addAnnotation:添加注释 MKMapView 类的实例方法。

答案 1 :(得分:0)