2011-03-17 20 views
9

Video kaydeden bir uygulama var. Uygulama UIImagePickerController kullanan kısmı tüm UIKit olsa cocos2d ve UIKit bir karışımıdır.UIImagePickerController, "Kullanım" düğmesine dokunulduğunda aralıklı olarak yanıt vermiyor.

Sorun: Bir video çekildikten sonra, "Kullan" düğmesine dokunduğunuzda, düğme seçili duruma geçer ve hiçbir şey olmuyor. "Retake" düğmesi devre dışı bırakıldı. Videoyu Oynatıp Duraklatabilirsiniz ancak görünüm asla kapanmaz ve - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info asla çağrılmaz.

Sorun, kısa ve uzun (< 5 saniye) videolarda gerçekleşir. Bellek uyarılarına neden olarak sorun çıktı. Görüntü seçiciyi başlatmadan önce ses oturumlarını değiştirmek sorunu da yeniden oluşturmadı.

Soruna neden olamadım. Sadece ara sıra olur. Herhangi bir fikir? İşte

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

Aynı sorunu yalnızca UIKit olan bir uygulamada görüyorum, ancak yalnızca bir (iOS 5) cihazında; başka bir (iOS 4) iyi çalışıyor. –

+1

Sorunuz çok fazla ayrıntı içermediğinden ve yalnızca 1 kod parçası gösterildiğinden, yanıt yerine yorum yapacağım. "ara sıra", bunun iş parçacığı ile yapılmasını önerir (mannual veya otomatik). Denediğim bir şey bu satırı "[tmpVC release];". Başka bir şey, temsilci doğru ayarlandığından emin olun. ImagePickerController' içine bakın ve bir log/breakpoint koyun. Daha sonra hata ayıklamasında neler olduğunu adım adım. Daha spesifik bir cevabı istiyorsanız, sorunuzla ilgili daha fazla ayrıntıya sahip olmanız gerekir. – Byte

+0

Projeyi paylaşırsanız, bu yardımcı olabilir. – Swizzlr

cevap

2

sunar kodu Simülatörü uygulamayı test ediyorsunuz nedir? Bir cihazda test etmeyi deneyin ve aynı şeyi yapıp yapmadığını görün. Benzer bir sorun yaşadığımı hatırlıyorum. Simülatördeki seçiciyle bir video seçemedim çünkü uygulama düğmesine bastıktan sonra uygulama "takılıp kalıyor".

2

Kodunuzda başka bir yere bakarsanız, bir if deyiminde çağrılır mı? - (void) imagePickerController: (UIImagePickerController *) seçicisini didFinishPickingMediaWithInfo: (NSDictionary *) bilgisini çağıran şey atadı ve yaptı. Bunlar sadece bakacağım bazı küçük şeylerdir, artı çağrıldığını bilmek için bir işlev çağırdığını veya orada bir hata olabileceğini bir NSLog() çağırın. parentViewController nil -

2

benim sorunun nedeni

[picker.parentViewController dismissModalViewControllerAnimated:YES] 

iOS 5,

artık çalıştığını oldu. Kafa karıştırıcı olarak, bu, seçici görünümün "bitmiş" olmasına, ancak işten çıkarılmamasına neden olur ve yalnızca etkin değildir.

[picker.presentingViewController dismissModalViewControllerAnimated:YES] 

Ama hayır presentingViewController mesajı olmadığı için bu, iOS 4'te çalışmaz:

Bunun yerine, kullanabilirsiniz.

Ya doğru olanı otomatik olarak seçen bir kategori yazabilir veya el ile görüntülenen denetleyiciye bir başvuruda bulunabilirsiniz. benim durumumda Örneğin temsilci de bunu takdim görünümü denetleyicisi olduğunu, bu yüzden benim seçiciden

[self dismissModalViewControllerAnimated:YES] 

yapmak başardı.

İlgili konular