2011-03-17 18 views
9

मेरे पास एक ऐप है जो वीडियो रिकॉर्ड करता है। ऐप कोकोस 2 डी और यूआईकिट का मिश्रण है हालांकि UIImagePickerController का उपयोग करने वाला हिस्सा सभी UIKit है।UIImagePickerController अंततः "उपयोग" बटन टैप करने के बाद प्रतिक्रिया देना बंद कर देता है

समस्या: वीडियो लेने के बाद, जब आप "उपयोग करें" बटन टैप करते हैं, तो बटन चयनित स्थिति में बदल जाता है और फिर कुछ भी नहीं होता है। "रीटेक" बटन अक्षम है। आप अभी भी वीडियो चला सकते हैं/रोक सकते हैं लेकिन दृश्य कभी खारिज नहीं होता है और - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info कभी नहीं कहा जाता है।

समस्या लंबी और छोटी (< 5 सेकंड) वीडियो पर होती है। स्मृति चेतावनियों के कारण इस मुद्दे को पुन: उत्पन्न नहीं किया गया। छवि पिकर लॉन्च करने से पहले ऑडियो सत्र बदलना इस मुद्दे को पुन: उत्पन्न नहीं करता था।

मैं इस मुद्दे का कारण बनने में असमर्थ रहा हूं। यह कभी-कभी होता है। कोई विचार?

यहाँ कोड है कि UIImagePickerController

UIImagePickerController *tmpVC = [[UIImagePickerController alloc] init]; 
    tmpVC.delegate = self; 
    tmpVC.allowsEditing = YES; 
    // First get the right media types for the right source 
    NSArray *types = nil; 
    if (useCamera) 
    { 
    types = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera]; 
    tmpVC.sourceType = UIImagePickerControllerSourceTypeCamera; 
    } 
    else 
    { 
    types = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypePhotoLibrary]; 
    tmpVC.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
    } 

    // Then see if "movie" is in there 
    for (NSString *mediaType in types) 
    { 
    if ([mediaType isEqualToString:(NSString*)kUTTypeMovie]) 
    { 
     tmpVC.mediaTypes = [NSArray arrayWithObjects:(NSString*)kUTTypeImage,(NSString*)kUTTypeMovie,nil]; 
     tmpVC.videoQuality = UIImagePickerControllerQualityTypeHigh; 
    } 
    } 

    // Present the configured controller 
    [self presentModalViewController:tmpVC animated:YES]; 
    [tmpVC release]; 
+0

मुझे एक ऐप में एक ही समस्या दिखाई दे रही है जो केवल UIKit है, लेकिन केवल एक (आईओएस 5) डिवाइस पर; एक और (आईओएस 4) ठीक काम करता है। –

+1

चूंकि आपका प्रश्न बहुत अधिक विवरण नहीं है और कोड का केवल 1 स्निपेट दिखा रहा है, मैं जवाब के बजाय टिप्पणी करूंगा। "कभी-कभी" सुझाव देता है कि इसे थ्रेडिंग (मैनुअल या स्वचालित) के साथ करना है। एक चीज जो मैं कोशिश करूंगा वह इस लाइन को हटा रहा है '[tmpVC रिलीज]; '। एक और बात यह है कि, सुनिश्चित करें कि प्रतिनिधि सही ढंग से सेट है। 'ImagePickerController' में देखें और लॉग/ब्रेकपॉइंट डालें। फिर डीबग में क्या होता है इसके माध्यम से कदम। यदि आप अधिक विशिष्ट उत्तर चाहते हैं, तो आपको अपने प्रश्न पर अधिक जानकारी प्राप्त करने की आवश्यकता है। – Byte

+0

यदि आप प्रोजेक्ट साझा कर सकते हैं, तो इससे मदद मिल सकती है। – Swizzlr

उत्तर

2

प्रस्तुत करता है आप सिम्युलेटर में ऐप का परीक्षण कर रहे हैं क्या है? किसी डिवाइस पर परीक्षण करने का प्रयास करें और देखें कि यह वही करता है या नहीं। मुझे याद है कि मुझे एक ऐसी ही समस्या थी जहां मैं सिम्युलेटर में पिकर के साथ एक वीडियो का चयन नहीं कर सका क्योंकि उपयोग बटन दबाए जाने के बाद एप्लिकेशन को "अटक" मिलेगा।

2

मैं आपके कोड में कहां देखता हूं, क्या इसे किसी कथन में कहा जाता है? क्या आपने उस चीज़ को आवंटित किया और उस चीज को छोड़ दिया जो - (शून्य) छवि को कॉल करता है PicerController: (UIImagePickerController *) पिकर किया गया FinishPickingMediaWithInfo: (NSDictionary *) जानकारी। वे कुछ छोटी चीजें हैं जिन्हें मैं ढूंढूंगा, साथ ही एक एनएसएलओजी() को कॉल करें जहां आप यह कहने के लिए कॉल को कॉल करते हैं कि इसे कॉल किया गया है या वहां कोई त्रुटि हो सकती है। parentViewController नहीं के बराबर है -

2

मेरी समस्या का कारण है कि आईओएस 5,

[picker.parentViewController dismissModalViewControllerAnimated:YES] 

में अब काम नहीं करता था। भ्रमित रूप से, यह पिकर व्यू को "समाप्त" होने का कारण बनता है लेकिन खारिज नहीं किया जाता है, और यह अभी भी निष्क्रिय रहता है।

इसके बजाय, आप उपयोग कर सकते हैं:

[picker.presentingViewController dismissModalViewControllerAnimated:YES] 

लेकिन यह आईओएस 4 में काम नहीं करता, क्योंकि इसमें कोई presentingViewController संदेश है।

आप या तो एक श्रेणी लिख सकते हैं जो स्वचालित रूप से सही को चुनता है, या दृश्य नियंत्रक का संदर्भ रखता है जो इसे मैन्युअल रूप से प्रस्तुत करता है। मेरे मामले में उदाहरण के लिए प्रतिनिधि भी दृश्य नियंत्रक जो इसे प्रस्तुत किया गया था, तो मैं

[self dismissModalViewControllerAnimated:YES] 

करने के लिए मेरी चयनकर्ता में सक्षम था।

संबंधित मुद्दे