Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UIImagePickerController摄像头在浏览多个视图并打开摄像头后取消不工作?_Iphone_Ios_Camera_Uiimagepickercontroller - Fatal编程技术网

Iphone UIImagePickerController摄像头在浏览多个视图并打开摄像头后取消不工作?

Iphone UIImagePickerController摄像头在浏览多个视图并打开摄像头后取消不工作?,iphone,ios,camera,uiimagepickercontroller,Iphone,Ios,Camera,Uiimagepickercontroller,我在应用程序中有15到20个视图。一个是相机功能。我的视图设置为UIImagePickerController以显示摄像头。我的问题是,当我在应用程序启动后直接打开相机时,一切正常。我的意思是取消,默认相机功能的拍摄功能。但假设,如果我浏览除照相机以外的所有内容,如地图、网络视图等,并且至少打开照相机时,取消按钮不起作用(捕获按钮在所有情况下都起作用)。在我捕获后,诸如“重新拍摄”、“使用”等控件都会成功显示,但这些按钮也无法访问 注:以上问题在发射后直接打开相机时不会发生 这些就是我试图解决这

我在应用程序中有15到20个视图。一个是相机功能。我的视图设置为
UIImagePickerController
以显示摄像头。我的问题是,当我在应用程序启动后直接打开相机时,一切正常。我的意思是取消,默认相机功能的拍摄功能。但假设,如果我浏览除照相机以外的所有内容,如地图、网络视图等,并且至少打开照相机时,取消按钮不起作用(捕获按钮在所有情况下都起作用)。在我捕获后,诸如“重新拍摄”、“使用”等控件都会成功显示,但这些按钮也无法访问

注:以上问题在发射后直接打开相机时不会发生

这些就是我试图解决这个问题的方法

  • 将以前的
    UIImagePickerController
    实例设为零,并在每次调用
    camera
    功能时新分配

  • 每次相机打开前都隐藏tabBar,因为我怀疑tabBar区域可能无法进入

  • 将视图的框架精确设置为手机屏幕大小,从而确保整个视图都可以访问

  • 请注意:

    希望这会有帮助

  • 这只发生在iPhone3GS上。在所有其他型号中,它都工作得很好。

  • 我发现,只有选项卡栏的部分(存在于所有其他视图中,并且仅在摄影机打开时隐藏)不可访问。我通过按下所有按钮发现了这一点,我可以访问选项卡栏外的按钮部分。可能下面的屏幕截图将提供更多信息

  • 请分享你的想法

    提前谢谢

    编辑:

    下面是我用来显示摄像头的代码

    -(IBAction)btnCamera_Clicked:(id)sender{
    
        _imgPicker = nil;
        _imgPicker = [[UIImagePickerController alloc] init];
        _imgPicker.delegate = self; 
        _imgPicker.allowsEditing = NO;     
        _imgPicker.wantsFullScreenLayout = YES;
    
        if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])  {
            _imgPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
            _imgPicker.showsCameraControls = NO;
            _imgPicker.cameraOverlayView = vwCameraOverlay;
            [self.tabBarController presentModalViewController:_imgPicker animated:YES];
        }
    }
    
    使用以下代码

    - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{
             [picker dismissModalViewControllerAnimated:YES];
    }
    
    编辑:

    要打开控制器,请尝试

    [self.tabBarController presentModalViewController:picker animated:YES];
    

    它应该可以工作。

    我已经实现了。但问题是,按钮本身不可访问(75%的部分是不可触摸的)。似乎您正在将摄影机视图添加到父视图之上,是吗?尝试将UIImagePickerController呈现为模态。是的,我仅将imagPickerController呈现为模态。这是我用于呈现相机的代码。“[自我呈现模态控制器:_imgpickeranimated:YES];“我想您的问题在于
    vwCameraOverlay
    检查覆盖的大小,它正在阻止控件。@iphone:我已经将视图大小精确设置为屏幕大小。“vwCameraOverlay.frame=CGRectMake(0,0320480);”。如果它是因为帧大小,那么它应该在我每次使用相机时出现。不,你的叠加应该是CGRectMake(0,0320480.0-44.0);44.0是“摄影机”工具栏,因此您的覆盖应该在“摄影机视图”中的工具栏启动之前结束。好吧,假设这解决了我的问题。但我的疑问是,当我在其他视图之前首先打开时,它是如何工作的。好的,我将尝试您的解决方案并让您知道。@iphone:不,这也没有帮助。