7

我有一個應用程序,我使用UIImagePickerController來使用本機相機單擊圖片,但當設備上的照片庫已滿。我收到一條警告消息,內容爲「無法拍照 - 沒有足夠的可用存儲空間來拍照。您可以在設置中管理您的存儲空間」。我有兩個選項來點擊「完成」按鈕或「設置」按鈕。點擊其中任何一個都不會執行任何操作,並且應用完全凍結。如何處理iOS系統警報消息?

這是我從控制檯日誌

Not enough space to take a picture. Available space is 0 

代碼獲取機械臂

UIImagePickerController *mediaPicker = [[UIImagePickerController alloc] init]; 
mediaPicker.sourceType = UIImagePickerControllerSourceTypeCamera; 
mediaPicker.delegate=self; 
mediaPicker.sourceType=UIImagePickerControllerSourceTypeCamera; 
[self presentModalViewController:mediaPicker animated:YES]; 

我已實施和已嘗試過所有與會代表和其不調用任何委託。

有沒有什麼辦法可以實現我可以使用偵聽器來檢測何時發生此錯誤並將用戶帶回到上一個屏幕?

+0

如果你這樣做會發生什麼:[UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]? – lottscarson

回答

1

這聽起來像是一個iOS中的錯誤,你應該提交一個雷達here

2

聽起來就像您的設備內存不足,系統發送了大量「內存不足」通知,並且您的應用程序也收到了一條。結果你的應用程序發佈了最初啓動UIImagePickerController的UIViewController

現在,當您使用完成/設置按鈕關閉imagePicker時,控件返回到您的應用程序。舊的UIViewController不再存在,在這種情況下你還沒有實現代碼來重新創建它。該設備看起來像被凍結,但只是因爲你的應用沒有重繪UI。否則,應用程序工作正常。

您可以通過實現didReceiveMemoryWarning方法到每一個的UIViewController和記錄檢查這種情況下,如果它被稱爲:

- (void)didReceiveMemoryWarning 
{ 
    NSLog(@"%@", [self description]); 
    [super didReceiveMemoryWarning]; 
} 

我最喜歡的錯誤。容易錯過:)