2012-12-18 6 views
7

पर "ऐप पर्याप्त उपलब्ध भंडारण ..." पर कैमरा ऐप खारिज नहीं होता है मेरे पास एक ऐप है जो आपको आईफोन कैमरा के साथ एक तस्वीर लेने देता है। सब कुछ एक आकर्षण की तरह काम करता है लेकिन जब एक नए डिवाइस पर परीक्षण किया जाता है जिसमें पर्याप्त भंडारण उपलब्ध नहीं होता है, तो कैमरा ऐप खारिज नहीं होता है।आईफोन

तो मूल रूप से मैं स्रोत कैमरे के साथ छवि पिकर खोलता हूं, मुझे एक पॉपअप मिलता है जो कहता है "एक फोटो लेने के लिए पर्याप्त उपलब्ध संग्रहण नहीं है ..." और फिर जब मैं ठीक दबाता हूं, तो मैं कैमरा ऐप पर हूं, शटर बंद होने के साथ, और "फोटो ले लो" और "रद्द करें" बटन दोनों भूरे रंग के होते हैं। इस बिंदु से मैं केवल एक चीज पर ऐप को मारना चाहता हूं क्योंकि इस स्क्रीन को छोड़ने का कोई तरीका नहीं है।

UIImagePickerController * photoPicker= [[UIImagePickerController alloc] init]; 
photoPicker.delegate = self; 
photoPicker.sourceType = UIImagePickerControllerSourceTypeCamera; 
if ([UIImagePickerController isSourceTypeAvailable:photoPicker.sourceType]) { 
    [self presentModalViewController:photoPicker animated:YES]; 
} 

वस्तु जो फोन इस पाठ्यक्रम का एक UIImagePickerControllerDelegate है और मैं दोनों प्रतिनिधि तरीकों को लागू (दोनों सफलता के लिए सही ढंग से जवाब देते हैं और घटनाओं को रद्द):

मेरी कोड में मैं की तरह कुछ के साथ कैमरे फोन

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info; 
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker; 

यह "कोई स्थान उपलब्ध नहीं है" व्यवहार किसी भी प्रतिनिधि तरीकों पर नहीं पड़ता है, इसलिए मैं प्रोग्रामिंग रूप से कैमरा ऐप को खारिज करने में असमर्थ हूं।

किसी भी विचार?

संपादित करें:

जब जहां कैमरा उपलब्ध नहीं है मैं अनुप्रयोग दुर्घटनाग्रस्त क्योंकि उस स्रोत उपलब्ध नहीं था देखा सिम्युलेटर में अनुप्रयोग चलाने के लिए कोशिश कर रहा। मुझे पता चला कि बस, photoPicker के लिए एक अनुपलब्ध sourceType बताए, यहां तक ​​कि नियंत्रक कॉल करने से पहले एप्लिकेशन क्रैश हो सकता है, इसलिए मैं निम्नलिखित करने के लिए कोड बदल दिया है:

UIImagePickerController * photoPicker= [[UIImagePickerController alloc] init]; 
photoPicker.delegate = self; 
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { 
    photoPicker.sourceType = UIImagePickerControllerSourceTypeCamera; 
}else{ 
    return; 
} 
[self presentModalViewController:photoPicker animated:YES]; 

यह अभी भी मेरे समस्या हल नहीं होती है, लेकिन यह एक दिलचस्प खोज है।

+1

पिकर प्रस्तुत करने से पहले 'isSourceTypeAvailable' आज़माएं। शायद इस मामले के सेब सोचा। –

+0

मेरे पास वास्तव में फोटो कोडर पेश करने की शर्त के रूप में मेरे कोड में 'isSourceTypeAvailable' है, मैंने इसे एक सरल स्निपेट दिखाने के लिए बस इसे हटा दिया है। योगदान के लिए धन्यवाद फिर भी! मैं इसके साथ मूल पोस्ट संपादित करूंगा। – manecosta

+0

असल में मुझे पता चला कि फोटो प्रस्तुत करने से पहले 'isSourceTypeAvailable' जांचना है, ऐसा करने के लिए कोई अच्छी जगह नहीं है, जैसे कि स्रोत उपलब्ध नहीं है, यह '.sourceType' के एट्रिब्यूशन पर सही क्रैश हो जाता है। यह अभी भी मेरी समस्या में मदद नहीं करता है। हालांकि मैं इस खोज को प्रतिबिंबित करने के लिए अपनी मूल पोस्ट अपडेट करूंगा। – manecosta

उत्तर

1

समस्या कैमरा के साथ नहीं है, लेकिन शेष एप्लिकेशन: कैमरा didReceiveMemoryWarning चालित कर चुका है और इस प्रकार दृश्य को "मार डाला", जहां आप वापस लौटने की कोशिश कर रहे थे। यह अभी और नहीं है।

फिक्स UIViewController के दृश्य को लागू करने के लिए है DidLoad, viewDidUnload, viewWillDisappear, viewWillAppear इत्यादि। और सुनिश्चित करें कि आपका ऐप कैमरे के कारण स्मृति स्थिति से बाहर हो सकता है और जब कैमरा गायब हो जाता है, तो सबकुछ आवश्यक प्रारंभ कर सकता है।

+0

मैंने उन सभी को लागू किया लेकिन बिना किसी सफलता के। त्रुटि स्मृति की कमी से संबंधित नहीं है, यह भंडारण की कमी है। इसलिए जब मैं कैमरा खोलता हूं, तो मुझे 'viewDidDisappear' मिलता है क्योंकि एक कैमरा कंट्रोलर वर्तमान की जगह लेता है, लेकिन यह 'viewDidUnload' या यहां तक ​​कि 'didReceiveMemoryWarning' में नहीं जाता है। सहायता का प्रयास करने के लिए धन्यवाद! – manecosta