UIImagePickerController不会停止位置服务

问题描述:

基本上我试图完成的是增强现实应用程序。我有地图视图和增强现实视图。
当用户只查看地图视图,然后返回UINavigation堆栈中的上一页时,所有位置服务都会停止,并且箭头工具栏通知消失。当用户离开地图视图并以模态方式呈现UIImagePickerController时,甚至在用户按下负责停止所有位置服务并弹出当前视图的按钮后,位置服务通知仍会保留。 我知道这不是我的CLLocationManager导致的问题,因为正如我所说的,当UIImagePicker从未放置在屏幕上时不会发生错误。我的想法是,用于地理定位或任何相机使用它们的位置服务并不会停止,即使在弹出当前视图之前我模糊了模式视图。
对于我的生活,我无法弄清楚他们为什么没有停下来,如果有人可能知道为什么这将是一个巨大的帮助。UIImagePickerController不会停止位置服务

下面是代码,我现在所拥有的在被调用,以用于从所述UINavigation堆

[_locationManager setDelegate:nil]; 
[_locationManager stopUpdatingLocation]; 
[_locationManager stopUpdatingHeading]; 
[[UIAccelerometer sharedAccelerometer] setDelegate:nil]; 
if (_imagePickerOn){ 
    [self dismissModalViewControllerAnimated:YES]; 
    _imagePickerOn = FALSE; 
} 

- 编辑 - 赫雷什弹出的视图,其中我呈现图像的方法制备方法选择器,非常基本的:

- (IBAction) cameraButtonPressed{ 
_imagePickerOn = TRUE; 
[self presentModalViewController:_imagePicker animated:NO]; 
} 
+0

你可以发表你介绍'UIImagePickerController'对象的方法吗? – 2011-05-29 18:00:16

+0

在那里,我将它添加到原始问题中,只有当用户想要离开地图视图并转到增强现实视图时才会调用该方法,并且只有在按下该按钮后才会调用该方法以解决问题。我在viewDidLoad方法中初始化imagepicker – JLoewy 2011-05-29 18:50:49

+0

不清楚按钮是地图视图还是图像选择器视图的一部分?您发布的原始代码是在按钮上点击调用的,对吗? – 2011-05-29 18:59:25

我假设你在其他地方预先分配了图像采集控制器。这可能是问题 - 当它的视图脱离屏幕(当你解雇它)时,它不会被释放,所以它仍然在内存中,并且仍然可能使用其位置管理器。这是一个bug,但不是你的bug,所以你不能用你当前的设置做很多事情。

更常见的模式是,当您要呈现它们并在-presentModalViewController:animated:的调用之后立即释放它们时,仅分配诸如UIImagePickerController之类的内容。它可以让你的用户界面的响应能力降低一些,特别是在分配复杂的视图控制器时(我不确定图像选择器控制器是否符合要求),但是可以减少内存使用,并希望不再使用位置服务,当你不想要他们。

+1

在我贴出这个问题之前,我曾尝试过。在屏幕关闭之前,我“释放”了它,并且仍然显示位置服务通知。我尝试了你建议的更常见的模式,懒惰地初始化它并在它出现后立即释放它,不幸的是仍然得到相同的错误,它在退出 – JLoewy 2011-05-29 19:34:39

+0

时显示仍在顶部工具栏中的小箭头。听起来像是一个更基本的错误。 http://bugreport.apple.com – 2011-05-29 20:31:09