首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iOS8核心位置有问题

iOS8核心位置有问题
EN

Stack Overflow用户
提问于 2015-02-12 14:43:18
回答 1查看 70关注 0票数 0

最近核心位置的使用发生了变化,但是即使在更新到新的规范之后,我似乎也无法让它正常工作。

我尝试开始一个新的项目,只有一个视图控制器,改变它的背景颜色GPS,坐标查找或失败。

代码语言:javascript
运行
复制
#import "ViewController.h"

@interface ViewController (){

    CLLocationManager *locationManager;

}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    if (locationManager == nil)
    {
        locationManager = [[CLLocationManager alloc] init];
    }


    locationManager.delegate = self;
    locationManager.distanceFilter = kCLDistanceFilterNone;
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;

    if (![CLLocationManager locationServicesEnabled]) {
        [self.view setBackgroundColor:[UIColor redColor]];
    }

    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
        [locationManager requestAlwaysAuthorization];
    [locationManager startUpdatingLocation];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


#pragma mark CLLocationManagerDelegate
//
//
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation
{
    [self.view setBackgroundColor:[UIColor greenColor]];
    NSLog(@"lat:%f lon:%f", newLocation.coordinate.latitude, newLocation.coordinate.longitude);
}

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
    //Debug(@"did fail with error. stop updating and return error.");

    [self.view setBackgroundColor:[UIColor orangeColor]];
}

@end

我加了

代码语言:javascript
运行
复制
<key>NSLocationAlwaysUsageDescription</key>
<string>This app needs your location to provide the best service.</string>

到Info.plist文件,但是.没有改变,位置图标出现在电池附近的状态栏上,但是没有任何位置出现,真实的或模拟的。

我是不是遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-12 14:52:23

尝试添加更改授权方法:

代码语言:javascript
运行
复制
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
{
    // This method has to be here to trigger the UIAlertView
    switch (status) {
        case kCLAuthorizationStatusDenied:
            break;
        case kCLAuthorizationStatusRestricted:
           break;
        case kCLAuthorizationStatusNotDetermined: {
            if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
                [self.locationManager requestAlwaysAuthorization];
        }
        default:
            break;
    }
}

编辑

您使用了错误的委托方法。didUpdateToLocation已经被否决了。用这个代替:

代码语言:javascript
运行
复制
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28480363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档