Подтвердить что ты не робот

IPhone-камера Iris/Shutter застряла в закрытом положении

Как указано в заголовке, приложение, которое я разрабатываю, имеет проблему, которая возникает только тогда, когда приложение перезапускается после ввода фона.

Ирис или затвор камеры застревают в закрытом положении. Самое смешное, что вы все равно можете сделать снимок, но вы не можете увидеть предварительный просмотр. После того, как снимок сделан, он отображается правильно в представлении.

Эта проблема не возникает, когда приложение запускается, если приложение полностью закрыто. Я могу делать снимки, добавлять эффекты и т.д., Каждый раз, когда камера открыта, она работает правильно.

Вот точные шаги для воспроизведения проблемы:

1) Я открываю приложение, все работает нормально.

2) Приложение переходит в фоновое изображение либо нажатием кнопки "домой", либо входящим вызовом.

3) Когда приложение входит в передний план/снова открывается, и камера получает доступ, экран затвора отображается и остается закрытым в застрявшем положении.

4) Единственный способ исправить это - отказаться от контроллера камеры модального просмотра и снова нажать кнопку камеры.

Я провел некоторое исследование, чтобы найти ответ и ничего не придумал. Нет утечек памяти, и я проверил распределения памяти в инструментах, и нет ничего необычного.

Надеюсь, у кого-то есть решение, я ценю помощь.

Спасибо заранее.

4b9b3361

Ответ 1

У меня такая же проблема, но немного сузилась - это происходит только с iOS 5. С некоторыми подсказками от других людей, говорящих о памяти, я освободил как можно больше памяти, прежде чем представить UIImagePickerController и проблему остановилось.

Ответ 2

У меня была та же проблема, работающая в проекте ARC.

Нажмите кнопку камеры на главном экране, на экране отобразится ImagePickerController, отмените функцию imagePickerController. Нажмите кнопку "Домой" (закрыть) в приложении. Вернитесь к моему приложению и снова нажмите кнопку камеры. В этом случае затвор будет отображаться и застревать.

Использование проблем с памятью в качестве основной подсказки - я узнал, что мой оверлейный вид имел ссылку strong на imagePickerController. Я изменил это на ссылку слабый, и проблема исчезла.

Ответ 3

Я думаю, что когда у вас есть проблема, и попробуйте сделать снимок с помощью приложения Apple, у вас также есть проблема. Не так ли? Если да, вы можете перезапустить устройство, чтобы решить проблему. И примените наконечник даны.

Ответ 4

Когда приложение переходит в фоновый режим, вы должны уволить камеру и представить ее, когда приложение восстанавливает фокус.

Ответ 5

У меня была такая же проблема, следующие решения работают для меня. всякий раз, когда вы представляете UIImagePickerController модально. запустите его и отпустите после использования. Надеюсь, это сработает и для вас.

self.imagePickerController = [[UIImagePickerController alloc] init];
self.imagePickerController.delegate = self;
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
    self.imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
    self.imagePickerController.showsCameraControls = NO;

    self.imagePickerController.cameraOverlayView = cameraOverlayView;
} else {
    self.imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
}
[self presentViewController:imagePickerController animated:YES completion:^(void)
 {
   // If you want to do something extra
 }];

Ответ 6

Просто, если кто-то ударит эту проблему при использовании MonoTouch, чтобы получить то же поведение, что и освобождение Image Picker, которое я должен был вызвать, а затем выполнить ручную GC.Collect();

Ответ 7

Для меня работала комбинация из двух следующих

  • Изменен ссылочный тип наложения с ' strong' на слабый

  • picker = nil, после отклонения imagePickerController (при отмене или после съемки)