#ios #objective-c #mapkit #cllocationmanager
#iOS #objective-c #mapkit #cllocationmanager
Вопрос:
Я работаю с некоторым кодом для обновления местоположения. Один и тот же код работает в разных проектах или в новом проекте, но всякий раз, когда я запускаю его в существующем проекте startUpdatingLocation
, он не вызывается. Таким образом, местоположение пользователя не может быть показано. Я имею в виду, что синей точки там нет. Вот код, который я использую:
в файле .h
@interface CheckIn : UIViewController<CLLocationManagerDelegate, MKMapViewDelegate, YCameraViewControllerDelegate>
{
CLLocationManager *locationManager;
}
@property (nonatomic, strong) CLLocationManager *locationManager;
@property (strong, nonatomic) IBOutlet MKMapView *mapCheckinAcity;
в файле .m
в viewDidLoad
self.locationManager = [[CLLocationManager alloc]init];
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
self.locationManager.delegate = self;
[self.locationManager startUpdatingLocation];
Я настраиваю все настройки и работаю на реальном устройстве. Как я уже сказал, это работает в новом проекте, но не в существующем. На данный момент я действительно в замешательстве.
Комментарии:
1. Проверьте конфиденциальность-> Настройки местоположения для вашего приложения. Как только приложению было отказано в доступе к местоположению, система больше не запрашивает пользователя. Реализовали ли вы
didChangeAuthorizationStatus
метод делегирования диспетчера местоположений? Какое значение вы получаете для статуса авторизации?2. В том же приложении у меня есть другая карта, которая была реализована ранее, например, более года назад. Он работает должным образом с тем же кодом.
3. Какой статус вы получаете
didChangeAuthorizationStatus
?4. он даже не вызывается.
5. Затем установите точку останова в вашем
viewDidLoad
месте, где вы создаете диспетчер местоположений, и убедитесь, что он вызывается. Ваш код выглядит правильно, но если ваши методы делегирования не вызываются, у вас проблема в другом месте