Я создал новый проект в Xcode6 и добавил старые файлы в этот проект (старые файлы создаются в xcode5). Но что происходит, все работает нормально, но Метод делегирования "didUpdateToLocation" не вызывается, я также использовал метод делегирования "didUpdateLocations", но оба они не работают. Код, который я использовал из старого файла, но базовая структура ядра была добавлена из xcode6, я не знаю, что мне не хватает пожалуйста, помогите мне, чтобы получить решение.
Метод делегата CLLocationmanager не работает в xcode6
Ответ 1
Если вы тестируете это на устройстве iOS 8/Simulator, старый код местоположения может не работать из-за того, как iOS 8 обрабатывает доступ к разрешениям служб. Начиная с текущей бета-версии iOS 8, вам нужно использовать новый метод -requestWhenInUseAuthorization
:
- (void)updateCurrentLocation {
if ([self.locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) {
[self.locationManager requestWhenInUseAuthorization];
}
[self.locationManager startUpdatingLocation];
}
В приглашении пользователя содержится текст из ключа NSLocationWhenInUseUsageDescription
в файле приложений Info.plist, и наличие этого ключа требуется при вызове этого метода.
<key>NSLocationWhenInUseUsageDescription</key>
<string>We use your location to find places near you.</string>