Как узнать, разрешено ли MKMapView использовать текущее местоположение?

Я показываю местоположение пользователя на mapView с:

self.mapView.showsUserLocation = YES;

Пользователю предлагается AlertView, где он может выбрать, разрешить ли использовать текущее местоположение или нет. Если он нажимает да, все в порядке, и я не беспокоюсь об этом.

Но если он нажимает НЕТ, я бы хотел увеличить масштаб до определенного региона.

Итак, как мне узнать, разрешено ли MKMapView использовать текущее местоположение?

Я нашел решение, в котором я бы создал свой собственный CLLocationManager и его делегат, чтобы увидеть, возвращает ли он отклоненную ошибку. Но это не совсем правильно, зачем вводить новый CLLocationManger, если он мне не нужен.

Разве нет другого пути?

1 ответ

Решение

Вам не нужен делегат. Просто используйте метод класса CLLocationManager authorizationStatus:

if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized) {
    // allowed
} else {
    // not allowed
}

Возможные значения:

typedef enum {
   kCLAuthorizationStatusNotDetermined = 0,
   kCLAuthorizationStatusRestricted,
   kCLAuthorizationStatusDenied,
   kCLAuthorizationStatusAuthorized
} CLAuthorizationStatus;
Другие вопросы по тегам