·您现在的位置: 江北区云翼计算机软件开发服务部 >> 文章中心 >> 网站建设 >> app软件开发 >> IOS开发 >> CLLocationManagerDelegate不调用didUpdateLocations(地图)

CLLocationManagerDelegate不调用didUpdateLocations(地图)

作者:佚名      IOS开发编辑:admin      更新时间:2022-07-23
这是因为xcode升级造成的定位权限设置问题。
升级xcode6以后打开以前xcode5工程,程序不能定位。工程升级到xcode6编译时需要iOS8 要自己写授权,不然没权限定位。
解决方法:
首先在 info.plist里加入对应的缺省字段 ,值设置为YES(前台定位写上边字段,前后台定位写下边字段)
          NSLocationWhenInUseUsageDescription   //允许在前台获取GPS的描述
          NSLocationAlwaysUsageDescription   //允许在前、后台获取GPS的描述 
后方附图

先上代码:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 #import "ViewController.h" #import <CoreLocation/CoreLocation.h> @interface ViewController ()<CLLocationManagerDelegate> @PRoperty (nonatomic, strong) CLLocationManager *locationManager; @end   @implementation ViewController   //    1. 懒加载初始化: - (CLLocationManager *)locationManager{     if(!_locationManager){         self.locationManager = [[CLLocationManager alloc] init];         self.locationManager.delegate = self;     }     return _locationManager; }   - (void)viewDidLoad {     [super viewDidLoad];   //    2. 调用请求:     if ([[[UIDevice currentDevice] systemVersion] doubleValue] > 8.0)     {         //设置定位权限 仅ios8有意义         [self.locationManager requestWhenInUseAuthorization];// 前台定位                   //  [locationManager requestAlwaysAuthorization];// 前后台同时定位     }     [self.locationManager startUpdatingLocation]; }   // 3.代理方法 - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{     NSLog(@"%ld",locations.count); } @end



      图片:图.png