6

我有一個應用程序使用UIImagePickerView允許用戶使用他們的相機拍攝照片或使用UIImagePickerView從相機膠捲中選擇一個。UIImagePickerView在相機模式顯示在iPad上dismissViewController全部黑色

獲取圖片後,我使用[picker presentViewController:myViewController animated:YES completion:nil]在選取器的頂部顯示不同的對話框。

如果我將我的應用程序作爲iPhone應用程序(在我的iPad上)運行,當我使用[myviewController.presentingViewController dismissViewControllerAnimated:YES completion:nil]解僱myViewController時,它可以返回到顯示CameraRoll或CameraFeed拍攝另一張照片。

但是在iPad上,如果我正在選擇一張照片,它可以正常工作,但如果我正在使用照相機照片拍攝照片,我只會看到黑屏。

任何想法爲什麼?

+0

什麼時候顯示額外的視圖控制器?用戶點擊'使用'按鈕後?我嘗試過,並在解散額外的控制器imagePicker顯示選擇的圖片(是,iPad)後,雖然你不能做任何其他與該階段的圖像選擇器,因爲所有的按鈕都被禁用。你是否願意提供你的UIPickerDelegate方法的代碼示例? – bazik 2013-05-09 18:36:57

+0

用戶點擊使用後,我得到代表上的 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info'調用。在那個方法中,我從'info'獲得我關心的圖像並將其傳遞給'myviewcontroller'。然後我調用'[picker presentViewController:myViewController animated:YES completion:nil;'然後,當我通過調用'[myviewController.presentingViewController dismissViewControllerAnimated:YES completion:nil]來解僱myViewController時''它只顯示一個黑屏,並且不會讓我拍了另一張照片。 – Liron 2013-05-10 12:37:15

回答

6

在iPad上,當您使用與相機饋送不同的來源時,您將UIImagePickerController呈現在彈出窗口中,您可以隨意使用它。但是,當你決定要拿起源UIImagePickerControllerSourceTypeCamera選取器窗口呈現全屏幕,你有兩種情況:

  1. 如果您使用自定義的控件(showsCameraControls = NO),只要你想,你可以 拿那麼多照片用相同的控制器。
  2. 如果您使用默認控件(showsCameraControls = YES),在 拍攝一張照片後,您必須關閉控制器,因爲它的 不能再次使用,我想這是您的情況。在拍攝照片後,您將 下一個控制器放在堆疊上,然後您 正試圖返回到您的選取器控制器,但它不再可用 ,您可以看到黑色屏幕。

蘋果文檔的imagePickerController:didFinishPickingMediaWithInfo:

如果圖像拾取的showsCameraControls屬性設置爲NO和 提供自定義的控件,可以駁回影像選擇器接口之前拍攝多張圖片 。但是,如果您設置 屬性設置爲是,你必須委派用戶拍攝一張照片或取消操作後關閉該圖像拾取界面 。

如果您想在這種情況下拍攝另一張照片,您必須返回基本控制器並再次創建UIImagePickerController實例。

我希望這將有助於。

編輯: IMO最簡單的方式來重建視圖控制器堆棧拍照沒有動畫,之後顯示出與動畫的下一個控制器後關閉該選擇器。它會給用戶感覺,下一個控制器顯示在拾取器控制器之後,沒有任何「閃爍」。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    [self dismissViewControllerAnimated:NO completion:^{ 
     [self presentViewController:<newController> animated:YES completion:nil]; 
    }]; 
} 
1

您可以嘗試通常關閉UIImagePicker,並且當Pre-viwer View Controller激活viewWillDesapear時,您向前一個viewController「說」,當它viewWillAppear時,它會再次顯示UIImagePicker。我認爲,它的工作原理。

+0

這就是我目前正在做的,基本上。我在viewDidAppear中顯示它(我認爲它不能在viewWillAppear中顯示它)。問題是,這樣做時,您會在攝像頭視圖再次顯示之前看到前一個視圖控制器的閃光燈。 – Liron 2013-05-14 05:33:56

1

我在應用程序中遇到類似問題。最後我提出了攝像機的圖像拾取的酥料餅的控制器,而不是模態的iPad。我不知道這是否會爲您的應用程序工作,但是這是一個不同的方法。我沒有問題做這種方式,喜歡它要好得多。

+0

是的,也許我會那樣做。這至少會在用戶從他們的照相機中挑選照片與拍攝新照片之間產生一些對稱。不是我真正想要的流量,但也許它不得不這樣做。 – Liron 2013-05-14 05:35:25