【发布时间】:2014-09-12 16:43:23
【问题描述】:
我想制作一个简单的 IOS 6.0 应用程序,每次更改位置时在屏幕上显示纬度/经度。 ViewController 文件非常简单。
我分配一个 CCLocationManager 对象,设置它的变量并启动它。 didUpdateLocations 被调用一次或两次,然后它停止被触发,即使 iPhone 被移动。如果我按下主页按钮并重新打开应用程序,屏幕上的数据会更新一次或两次,然后再次停止。 在模拟时它可以正常工作,但不能在真正的 3GS iPhone 上运行。
如果我取消注释 didUpdateLocations 中的启动/停止并不断停止和启动服务,它可以工作,但电池会以极快的速度耗尽。
此外,这是一个更大项目的一部分,并且每次更改位置时都必须调用 didUpdateLocations 必须。
ViewController.h
#import <CoreLocation/CoreLocation.h>
@interface ViewController : UIViewController
@property (nonatomic , strong) CLLocationManager *locationManager;
@property (weak, nonatomic) IBOutlet UILabel *lbl;
@end
ViewConroller.m
#import "ViewController.h" @interface ViewController ()
@结束
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
_locationManager = [[CLLocationManager alloc] init];
_locationManager.delegate = self;
_locationManager.distanceFilter = kCLHeadingFilterNone; // whenever we move
_locationManager.desiredAccuracy = kCLLocationAccuracyBest;
_locationManager.PausesLocationUpdatesAutomatically = NO;
[_locationManager startUpdatingLocation];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
CLLocation *newLocation = [locations lastObject];
_lbl.text=[NSString stringWithFormat:@"%lf %lf",newLocation.coordinate.latitude, newLocation.coordinate.longitude];
//[_locationManager stopUpdatingLocation];
//[_locationManager startUpdatingLocation];
}
@end
如果有任何关于哪里出了问题的建议,我会很欢迎,我已经失去了一个星期没有解决它。
顺便说一句,我已经测试了 _locationManager 变量的各种值,但行为中没有任何变化
附加信息: 应用程序被授权使用位置服务 应用程序在前台
【问题讨论】:
-
一件事 - 将
kCLHeadingFilterNone更改为kCLDistanceFilterNone。 -
很遗憾没有成功。
-
将
<CLLocationManagerDelegate>添加到您的班级。而且,这就是视图控制器中的所有代码吗?如果没有,请全部添加。 -
我在 .h 处添加了委托,但没有任何效果。是的,这就是视图控制器中的所有代码。我尽可能简单地重现错误。可能是硬件错误?我可能会尝试在另一部 iPhone 上检查它
标签: ios objective-c iphone core-location