这是一个可怕的错误。使用 CLLocationManger 时,无论是使用 startUpdatingLocation 还是使用 ALAsset 方法来访问照片的元数据,系统都会按预期提示进行位置访问……但一旦显示,提示就会消失。我找不到原因,希望其他人也遇到过这个问题。其他警报不会发生这种情况(例如显示 UIAlertView)。
我什至可以设置目的属性,它会显示,但同样,它只是一会儿,然后它就会自行关闭。
这对我来说是个大问题,因为我需要获得许可才能使用照片元数据。
这是一个可怕的错误。使用 CLLocationManger 时,无论是使用 startUpdatingLocation 还是使用 ALAsset 方法来访问照片的元数据,系统都会按预期提示进行位置访问……但一旦显示,提示就会消失。我找不到原因,希望其他人也遇到过这个问题。其他警报不会发生这种情况(例如显示 UIAlertView)。
我什至可以设置目的属性,它会显示,但同样,它只是一会儿,然后它就会自行关闭。
这对我来说是个大问题,因为我需要获得许可才能使用照片元数据。
您是否在这样的方法中创建 CLLocationManager 实例:
-(void) viewDidAppear:(BOOL)animated {
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
[locationManager startUpdatingLocation];
}
如果是这样,那么只要函数退出,就会清理本地 locationManager 变量。您应该在实例或静态变量中保存对 locationManager 的引用:
static CLLocationManager *locationManager;
-(void) viewDidAppear:(BOOL)animated {
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
[locationManager startUpdatingLocation];
}
嗯,现在问题似乎解决了。而且我不知道为什么或如何。