2

我在应用程序中有大约 15 到 20 个视图。一种是用于相机功能。我可以查看设置UIImagePickerController为显示相机的视图。我的问题是,当我在应用程序启动后直接打开相机时,一切正常。我的意思是取消,默认相机功能的捕获功能。但是假设,如果我浏览除了相机以外的所有东西,比如地图、webView 等,如果我打开相机,取消按钮不起作用(捕捉按钮在所有情况下都有效)。捕捉后,重拍、使用等控件正在显示成功,但这些按钮也无法访问。

注意:启动后直接打开相机不会出现上述问题。

这些是我尝试解决此问题的方法。

  1. 将前一个实例设为 nil 并在UIImagePickerController每次camera调用时分配新的功能。

  2. 每次打开相机之前都隐藏 tabBar,因为我怀疑 tabBar 的区域可能无法访问。

  3. 将视图的框架精确设置为手机屏幕大小,以确保可以访问整个视图。

请注意:

愿这会有所帮助。

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

  2. 我发现,只有 tabBar 的一部分(存在于所有其他视图中并且仅在相机打开时才隐藏)不可访问。我通过按下所有按钮发现了这一点,我可以访问存在于 tabBar 之外的按钮部分。可能是下面的屏幕截图会提供更多信息。

在此处输入图像描述

请分享你的想法。

提前致谢。

编辑:

下面是我用来显示相机的代码。

-(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];
    }
}
4

1 回答 1

3

使用以下代码

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

编辑:

并打开控制器尝试

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

它应该工作。

于 2013-07-19T05:47:39.710 回答