Я пытаюсь использовать структуру CLLocationManager
в моем проекте iOS для доступа к местоположению пользователя, но когда я звоню
[locationManager startUpdatingLocation]
не вызываются locationManager:didUpdateLocations:
или locationManager:didFailWithError:
.
//myViewController.h
@interface myViewController : UITableViewController <CLLocationManagerDelegate>
@end
//myViewController.m
@implementation myViewController{
CLLocationManager *locationManager;
}
//edit
- (void)viewDidLoad
{
[super viewDidLoad];
locationManager = [[CLLocationManager alloc] init];
}
//finish edit
-(void)getLocation
{
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
}
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
UIAlertView *errorAlert = [[UIAlertView alloc]
initWithTitle:@"Error"
message:@"Failed to Get Your Location"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[errorAlert show];
}
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
CLLocation *newLocation = locations[[locations count] -1];
CLLocation *currentLocation = newLocation;
NSString *longitude = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.longitude];
NSString *latitude = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.latitude];
if (currentLocation != nil) {
NSLog(@"latitude: %@", latitude);
NSLog(@"longitude: @"%@", longitude);
}else {
UIAlertView *errorAlert = [[UIAlertView alloc]
initWithTitle:@"Error" message:@"Failed to Get Your Location"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[errorAlert show];
}
}
@end
Ни метод делегата не вызывается, несмотря на то, что он говорит в документации:
"Этот метод возвращает немедленно. Вызов этого метода заставляет диспетчер местоположений получить исправление исходного местоположения (которое может занять несколько секунд) и уведомить вашего делегата, вызвав его метод locationManager:didUpdateLocations:
[...] В дополнение к вашему делегату объект, реализующий метод locationManager:didUpdateLocations:
, он также должен реализовать метод locationManager:didFailWithError:
для ответа на потенциальные ошибки."
Не знаю, как отладить проблему.
Спасибо,
JA