7

मेरे पास एक ऐप है जहां मैं चित्रों पर क्लिक करने के लिए मूल कैमर इनऑर्डरर का उपयोग करने के लिए UIImagePickerController का उपयोग कर रहा हूं, लेकिन जब डिवाइस पर फोटो गैलरी भर जाती है। मुझे एक चेतावनी संदेश मिलता है जो कहता है "फोटो नहीं ले सकता - फोटो लेने के लिए पर्याप्त उपलब्ध संग्रहण नहीं है। आप सेटिंग में अपना स्टोरेज प्रबंधित कर सकते हैं"। मुझे "पूर्ण" बटन या "सेटिंग्स" बटन पर क्लिक करने के लिए दो विकल्प दिए गए हैं। उनमें से किसी एक पर क्लिक करने से कुछ भी नहीं होता है और ऐप पूरी तरह से जम जाता है।आईओएस के लिए सिस्टम अलर्ट संदेश कैसे संभालें?

यह वही मैं पिकर

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

मैं लागू कर दिया है के लिए कंसोल लॉग

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

कोड से मिलता है और सब पहले से ही प्रतिनिधियों और उसके किसी भी प्रतिनिधि को फोन नहीं की कोशिश की है।

क्या कोई तरीका है कि मैं कुछ ऐसा कार्यान्वित कर सकता हूं जहां मैं यह त्रुटि उत्पन्न करने के लिए श्रोता का उपयोग कर सकता हूं और उपयोगकर्ता को पिछली स्क्रीन पर वापस ले सकता हूं?

+0

यदि आप ऐसा करते हैं तो क्या होता है: [UIImagePickerController isSourceType उपलब्ध है: UIImagePickerControllerSourceTypeCamera]? – lottscarson

उत्तर

1

यह आईओएस में एक बग की तरह लगता है और आपको एक रडार here दर्ज करना चाहिए।

2

आपके डिवाइस की तरह स्मृति से बाहर लगता है, सिस्टम ने "आउट ऑफ़ मेमोरी" अधिसूचनाएं भेजीं और आपके ऐप को भी एक मिला। परिणामस्वरूप आपके ऐप ने UIViewController जारी किया, जिसने मूल रूप से UIImagePickerController लॉन्च किया।

अब जब आप छवि/पिकर को पूर्ण/सेटिंग्स बटन से खारिज करते हैं, तो नियंत्रण आपके ऐप पर वापस लौटाता है। पुराना UIViewController अब अस्तित्व में नहीं है और आपने इस तरह की स्थितियों में खरोंच से इसे फिर से बनाने के लिए कोड लागू नहीं किया है। डिवाइस इसे जमे हुए दिखता है, लेकिन केवल इसलिए कि यूआई आपके ऐप द्वारा दोबारा नहीं खींचा गया था। अन्यथा ऐप बस ठीक काम करता है।

आप हर UIViewController और प्रवेश में didReceiveMemoryWarning विधि को लागू करने से इस मामले की जांच कर सकते हैं अगर यह कहा जाता है:

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

मेरी पसंदीदा कीड़े में से एक। याद करने में आसान :)