Ios 前摄像头上的操作表未响应
我已经设置了一个操作表,返回3个选项(拍照、从galery中选择和取消)。拍照时,前摄像头会出现并完美地拍照,但问题是当我再次拍照时,它不会显示前摄像头,而是显示后摄像头。 代码如下:Ios 前摄像头上的操作表未响应,ios,objective-c,ipad,Ios,Objective C,Ipad,我已经设置了一个操作表,返回3个选项(拍照、从galery中选择和取消)。拍照时,前摄像头会出现并完美地拍照,但问题是当我再次拍照时,它不会显示前摄像头,而是显示后摄像头。 代码如下: - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { CustomImagePickerController *imagePicker = [[CustomImag
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
CustomImagePickerController *imagePicker = [[CustomImagePickerController alloc] init];
[imagePicker setDelegate:self];
[imagePicker setAllowsEditing:YES];
if(buttonIndex == 0) {
[imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
[imagePicker setCameraDevice:UIImagePickerControllerCameraDeviceFront];
} else if(buttonIndex == 1) {
[imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
}
我在代码中有更多的东西,但是主要的动作设置在那里
有什么不对劲吗?
感谢之所以会发生这种情况,是因为当您第一次启动摄像头时,在关闭控制器后,后台的
AVCaptureSession
可能会继续运行。因此,下次你展示它时,它试图添加前摄像头,但它很忙,所以它转到下一个可用的摄像头(后摄像头),中断自身(从而释放前一个摄像头)等等。如果您使用的是ARC,那么最好使用imagePicker
作为您使用它的类的属性
或者每次都检查摄像头设备
if(buttonIndex == 0)
{
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
[imagePicker setCameraDevice:UIImagePickerControllerCameraDeviceFront];
}
}
在“[self-presentViewController:imagePicker animated:YES completion:nil];”中,它向我显示了一条警告,告诉我:未找到实例方法(返回类型默认为id),我尝试了你的代码,但没有解决它:(是的,我正在使用它。我如何每次都检查?将你的
imagePicker
作为类的属性,如下所示?@property(非原子,保留)UIImagePickerController*imagePicker;
if(buttonIndex == 0)
{
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
[imagePicker setCameraDevice:UIImagePickerControllerCameraDeviceFront];
}
}