我想创建一个简单的IOS 6.0应用程序,每次更改位置时都会在屏幕上显示lat / lon。 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 ()
@end
@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
如果有任何关于错误的建议,我会欢迎它,我已经失去了一个星期而没有解决它。
BTW,我已经测试了_locationManager变量的各种值,但行为中没有任何chnage
其他信息: 应用程序被授权使用位置服务 应用程序在前台
答案 0 :(得分:1)
根据我在iOS上基于位置的编程的经验,针对类似问题的一些提示。
PS。我不知道你搬了多少但只是为了让你知道,移动几步并不能确保你得到一个新的位置更新,尝试在某些车辆(自行车/汽车/公共汽车)上使用它。
答案 1 :(得分:0)
我也遇到了这个问题-最简单的解决方法就是复制目标。然后,您可以删除原始目标。
看来问题出在旧的Xcode项目上,而不是新创建的项目上。
答案 2 :(得分:0)
您可以将此调用添加到您的代码中:
locationManager.stopUpdatingLocation()