我有一个 Root View Controller ,我从它转到下一个场景。这个新的 View Controller 提供了一个 UIImagePickerController 并在启动时在 viewDidLoad 中选择前置摄像头:
cameraUI.cameraDevice=UIImagePickerControllerCameraDeviceFront;
这行得通,因此选择并显示前置摄像头。我拍了张照片,然后去下一个场景。然后我退出并返回 Root View Controller 。我再次进入下一个场景,再次加载一个 UIImagePickerController(调试时它再次进入 viewDidLoad,所以这有效)。在 viewDidLoad 中,它再次使用上面的代码选择前置摄像头。
但是!现在,UIImagePickerController 只显示后置摄像头!如果我第三次返回到 Root View Controller 并再次加载 UIImagePickerController,现在它会正常显示前置摄像头。第四次显示后置摄像头等。
我调试了它,每次它都像预期的那样从上面跳转到代码行,所以我不明白为什么后置摄像头会每隔一段时间显示一次?
最佳答案
移动到下一个场景时我没有释放 UIImagePickerController 对象 使用:
[cameraUI dismissModalViewControllerAnimated:NO];
[cameraUI.view removeFromSuperview];
[cameraUI release];
最后一行解决了这个问题。 (我仍然不太明白这一点,因为呈现 UIImagePickerController 的 View Controller 再次完全加载)
关于objective-c - UIImagePickerController 每次启动时都会显示错误的相机设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9504053/