2011-05-29 105 views
1

基本上我試圖完成的是增強現實應用程序。我有地圖視圖和增強現實視圖。
當用戶只查看地圖視圖,然後返回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

回答

0

我假設你在其他地方預先分配了圖像採集控制器。這可能是問題 - 當它的視圖脫離屏幕(當你解僱它)時,它不會被釋放,所以它仍然在內存中,並且仍然可能使用其位置管理器。這是一個bug,但不是你的bug,所以你不能用你當前的設置做很多事情。

更常見的模式是,當您要呈現它們並在-presentModalViewController:animated:的調用之後立即釋放它們時,僅分配諸如UIImagePickerController之類的內容。它可以讓你的用戶界面的響應能力降低一些,特別是在分配複雜的視圖控制器時(我不確定圖像選擇器控制器是否符合要求),但是可以減少內存使用,並希望不再使用位置服務,當你不想要他們。

+1

在我貼出這個問題之前,我曾嘗試過。在屏幕關閉之前,我「釋放」了它,並且仍然顯示位置服務通知。我嘗試了你建議的更常見的模式,懶惰地初始化它並在它出現後立即釋放它,不幸的是仍然得到相同的錯誤,它在退出 – JLoewy 2011-05-29 19:34:39

+0

時顯示仍在頂部工具欄中的小箭頭。聽起來像是一個更基本的錯誤。 http://bugreport.apple.com – 2011-05-29 20:31:09