2011-03-17 54 views
9

我有一個應用程序可以記錄視頻。該應用程序是cocos2d和UIKit的混合,儘管使用UIImagePickerController的部分都是UIKit。點擊「使用」按鈕後,UIImagePickerController間歇性停止響應

問題: 拍完視頻後,點擊「使用」按鈕後,按鈕變爲選定狀態,然後什麼都不會發生。 「重拍」按鈕被禁用。您仍然可以播放/暫停視頻,但該視圖永不會被解除,並且永遠不會調用該視頻。

問題發生在多空(< 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的應用程序中看到相同的問題,但僅在一個(iOS 5)設備上;另一個(iOS 4)工作正常。 – 2012-06-06 12:36:04

+1

由於您的問題不是很詳細,只顯示一小段代碼,我會評論而不是回答。 「偶爾」表明它與線程(手動或自動)有關。我想嘗試的一件事就是刪除這一行'[tmpVC release];'。另一件事是,確保委託設置正確。看看'imagePickerController'並放置一個日誌/斷點。然後逐步瞭解調試中發生的情況。如果你想要更具體的答案,你需要更詳細的問題。 – Byte 2012-06-08 13:36:59

+0

如果你可以分享這個項目,那可能會有幫助。 – Swizzlr 2012-06-10 00:35:25

回答

2

代碼你在模擬器測試應用程序?嘗試在設備上測試它,看看它是否也一樣。我記得我有一個類似的問題,我無法使用模擬器中的選擇器選擇一個視頻,因爲在按下使用按鈕後,應用程序會「卡住」。

2

我會看看你的代碼中的其他地方,它是否在if語句中調用?你分配和初始化的東西,調用 - (void)imagePickerController:(UIImagePickerController *)選擇器didFinishPickingMediaWithInfo:(NSDictionary *)信息。這些只是我會尋找的一些小東西,再加上一個NSLog(),你可以看到調用的函數知道它已被調用,或者可能有錯誤。

2

我的問題的原因是,在iOS 5中,

[picker.parentViewController dismissModalViewControllerAnimated:YES] 

不再起作用 - parentViewController爲零。令人困惑的是,這會導致選擇器視圖「完成」,但不會被解僱,而且它仍然不活躍。

相反,你可以使用:

[picker.presentingViewController dismissModalViewControllerAnimated:YES] 

但是,這並不在iOS 4的工作,因爲沒有presentingViewController消息。

您可以編寫一個自動選擇正確類別的類別,或者保存對手動顯示該類別的視圖控制器的引用。例如,在我的情況下,委託也是其中提出它的視圖控制器,所以我能夠做

[self dismissModalViewControllerAnimated:YES] 

在我的選擇。