没有调用MKMapView didUpdateUserLocation

时间:2011-10-04 10:00:57

标签: objective-c xcode mkmapview

我正在关注大书呆子牧场指南书并修改我的app delegate.h看起来像这样:

   #import <UIKit/UIKit.h>
   #import <CoreLocation/CoreLocation.h>
   #import <MapKit/MapKit.h>
   @interface WhereamiAppDelegate : NSObject <UIApplicationDelegate,CLLocationManagerDelegate, MKMapViewDelegate>
   {   
       IBOutlet UITextField *locationTitleField;
       IBOutlet UIActivityIndicatorView *activityIndicator;
       IBOutlet MKMapView *worldView;
       CLLocationManager *locationManager;
   }
  @property (nonatomic, retain) IBOutlet  UIWindow *window;
  @property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;
  @property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;
  @property (nonatomic, retain, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator;
  - (void)saveContext;
  - (NSURL *)applicationDocumentsDirectory;
 @end

.m看起来像这样:

 #import "WhereamiAppDelegate.h"
 @implementation WhereamiAppDelegate
 @synthesize window = _window;
 @synthesize managedObjectContext = __managedObjectContext;
 @synthesize managedObjectModel = __managedObjectModel;
 @synthesize persistentStoreCoordinator = __persistentStoreCoordinator;

 -(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation {

     CLLocationCoordinate2D loc = [userLocation coordinate];
     MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(loc, 250, 250);
     [worldView setRegion:region animated:YES];
     NSLog(@"didUpdateUserLocation is called");
  }
  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
  {
     // Override point for customization after application launch.

// Create location manager object
     locationManager = [[CLLocationManager alloc] init];
// There will be a warning from this line of code; ignore it for now
     [locationManager setDelegate:self];
// We want all results from the location manager
     [locationManager setDistanceFilter:kCLDistanceFilterNone];
// And we want it to be as accurate as possible
// regardless of how much time/power it takes
     [locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
// Tell our manager to start looking for its location immediately
// [locationManager startUpdatingLocation];
     [worldView setShowsUserLocation:YES];
// This line may say self.window, don't worry about that
     [self.window makeKeyAndVisible];
     return YES;
 }
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
 {
      NSLog(@"%@", newLocation);
 }
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
      NSLog(@"Could not find location: %@", error);
 }

当我打开应用程序时,它应该放大到我的位置。但它没有缩放,所以我在didUpdateUserLocation中放置一个NSLog来查看它是否被调用。但它从未打印过,因此没有被打印出来。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

同样的事发生在我身上......

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    ...
    [worldView setDelegate:self];
    ...
}

THKS