IPhone-камера Iris/Shutter застряла в закрытом положении
Как указано в заголовке, приложение, которое я разрабатываю, имеет проблему, которая возникает только тогда, когда приложение перезапускается после ввода фона.
Ирис или затвор камеры застревают в закрытом положении. Самое смешное, что вы все равно можете сделать снимок, но вы не можете увидеть предварительный просмотр. После того, как снимок сделан, он отображается правильно в представлении.
Эта проблема не возникает, когда приложение запускается, если приложение полностью закрыто. Я могу делать снимки, добавлять эффекты и т.д., Каждый раз, когда камера открыта, она работает правильно.
Вот точные шаги для воспроизведения проблемы:
1) Я открываю приложение, все работает нормально.
2) Приложение переходит в фоновое изображение либо нажатием кнопки "домой", либо входящим вызовом.
3) Когда приложение входит в передний план/снова открывается, и камера получает доступ, экран затвора отображается и остается закрытым в застрявшем положении.
4) Единственный способ исправить это - отказаться от контроллера камеры модального просмотра и снова нажать кнопку камеры.
Я провел некоторое исследование, чтобы найти ответ и ничего не придумал. Нет утечек памяти, и я проверил распределения памяти в инструментах, и нет ничего необычного.
Надеюсь, у кого-то есть решение, я ценю помощь.
Спасибо заранее.
Ответы
Ответ 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 (при отмене или после съемки)