Присутствует UIImagePickerController из UIViewController, который уже представлен

#ios #objective-c #swift #uiimageview #uiimagepickercontroller

#iOS #objective-c #swift #uiimageview #uiimagepickercontroller

Вопрос:

Я создаю контроллер представления типа настройки / редактирования следующим образом:

     EditViewController *editController = [storyboard instantiateViewControllerWithIdentifier:@"parent"];
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:editController];
    editController.delegate = self;
    navController.modalPresentationStyle = UIModalPresentationPopover;
    [self presentViewController:navController animated:YES completion:nil];
  

ПРИМЕЧАНИЕ: EditViewController является подклассом UITableViewController, а «self» — это просто основной контроллер представления навигации.

Теперь из этого представленного контроллера навигации / контроллера просмотра есть UIImageView, который пользователь может заполнить, сделав снимок с камеры, что они делают с помощью действия кнопки:

 - (IBAction)takePhotoForImageView:(UIButton *)sender {    
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    picker.allowsEditing = YES;
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    picker.cameraDevice = UIImagePickerControllerCameraDeviceRear;
    picker.modalPresentationStyle = UIModalPresentationFullScreen;

    [self showViewController:picker sender:self];
//    [self presentViewController:picker animated:YES completion:nil];
}
  

Код выполняется без сбоев, но я получаю следующее в отладчике:

 [Camera] Failed to read exposureBiasesByMode dictionary: Error Domain=NSCocoaErrorDomain 
Code=4864 "*** -[NSKeyedUnarchiver _initForReadingFromData:error:throwLegacyExceptions:]: data
 is NULL" UserInfo={NSDebugDescription=*** -[NSKeyedUnarchiver
 _initForReadingFromData:error:throwLegacyExceptions:]: data is NULL}

[Presentation] Attempt to present <UIImagePickerController: 0x11d00fe00> on 
<UINavigationController: 0x11e009c00> (from <EditViewController: 0x11d010c00>) 
while a presentation is in progress.
  

Я понятия не имею о первой ошибке, но предполагаю, что она связана со второй.

Что касается второй ошибки / предупреждения (?), отклонение первого представленного контроллера перед представлением UIImagePickerController не является вариантом.

Итак, вопрос в том, как правильно запустить UIImagePickerController (с исходным типом UIImagePickerControllerSourceTypeCamera) из другого контроллера представления, который также представлен?

Комментарии:

1. Второе предупреждение является нормальным, когда вы представляете VC, когда он уже представлен, exposureBiasesByMode похоже, это ошибка, связанная с камерой. Появляется ли это предупреждение на всех устройствах / симуляторе?

2. @ItayBrenner даже я сталкиваюсь с такой же проблемой только в iOS14. А также некоторое время средство выбора не сжимает видео.