2 sachinks SachinKS 于 2013.08.09 14:47 提问

临时禁止后CLLocationManager不返回位置

临时禁用了本地服务和应用许可,这样可以测试一些处理场景的代码。再次开启后,就不能再获取当前位置了,代码如下:

CLLocationManager *locationManager = [ [CLLocationManager alloc] init];
[locationManager startUpdatingLocation];
CLLocation *currentLocation = locationManager.location;
[locationManager stopUpdatingLocation];

运行代码后locationManager.location等于nil

设备是ios6的iPad。

1个回答

g989_1314125
g989_1314125   2013.08.09 15:36
已采纳

设置CLLocationManager代理:

CLLocationManager *locationManager = [ [CLLocationManager alloc] init];
locationManager.delegate = self;
[locationManager startUpdatingLocation];

然后试试CLLocationManager的代理:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
    self.currentLocation = newLocation;            
}
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
    // The location "unknown" error simply means the manager is currently unable to get the location.
    // We can ignore this error for the scenario of getting a single location fix, because we already have a
    // timeout that will stop the location manager to save power.
    if ([error code] != kCLErrorLocationUnknown) {
        [self stopUpdatingLocation:NSLocalizedString(@"Error", @"Error")];
    }
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!