Xcode 6 / iOS 8位置模拟不起作用

我刚刚更新到Xcode 6 / iOS 8 SDK和模拟器中的位置服务模拟开始不起作用。 我更新之前还好(我目前无法在真实设备上testing)。 现在,当我select一个位置进行模拟时,没有任何反应。 委托的-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations方法不被调用。 我已经重新启动Xcode,清理生成文件夹,没有任何改变。 为什么会这样呢?

由于IOS 8需要在启动CLLocationManager之前请求授权。

你在调用这些方法吗?

 [self.locationManager requestWhenInUseAuthorization]; // For foreground access [self.locationManager requestAlwaysAuthorization]; // For background access 

如果您在XCode 6之前创build了项目,则可能还需要添加新的权限的info.plist条目。

欲了解更多的细节看看这个职位: 位置服务不工作在iOS 8

在您的方法中添加下面的代码

 if ([self.locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) { [self.locationManager requestWhenInUseAuthorization]; } 

在你的info.plist文件中添加Below行

键: NSLocationWhenInUseUsageDescription值:使用当前位置

使用Xcode 6.3.1我有位置select停止更新。 修复是运行另一个项目,select“模拟位置>不要模拟位置”,然后再次build立原来的项目恢复正常的位置设置。

 - (void)startLocationUpdates{ geocoder = [[CLGeocoder alloc] init]; locationManager = [[CLLocationManager alloc] init]; locationManager.delegate = self; locationManager.distanceFilter = kCLDistanceFilterNone; locationManager.desiredAccuracy = kCLLocationAccuracyBest; if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) [locationManager requestWhenInUseAuthorization]; [locationManager startUpdatingLocation]; } - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{ CLLocation *currentLocation = newLocation; if (currentLocation != nil) { } // Reverse Geocoding [geocoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray *placemarks, NSError *error) { if (error == nil && [placemarks count] > 0) { placemark = [placemarks lastObject]; fullAddress = [NSString stringWithFormat:@"%@,%@,%@,%@", placemark.thoroughfare, placemark.locality, placemark.administrativeArea, placemark.country]; subtitleLocation = [NSString stringWithFormat:@"PostalCode::%@", placemark.postalCode]; } else { // NSLog(@"%@", error.debugDescription); } } ]; } - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{ NSLog(@"Cannot find the location."); } 

其他的答案是正确的,但我也必须重置模拟器才能得到一个位置,而它在设备上工作正常。 该应用程序最初安装在iOS 8之前的模拟器上。

重置您的模拟器:

https://stackoverflow.com/a/16195931