iOS7相机选取器从相机获取照片时被冻结

4

我有一个相机视图控制器的简单代码:

UIImagePickerController picker = new UIImagePickerController();
picker.PrefersStatusBarHidden ();
picker.SourceType = UIImagePickerControllerSourceType.Camera;
UIImagePickerControllerCameraDevice dev = picker.CameraDevice;
PresentViewController (picker, false, null);
picker.FinishedPickingMedia += (object sender, UIImagePickerMediaPickedEventArgs e) => BeginInvokeOnMainThread (delegate {DismissViewController (false, null);});

我的应用程序启动时,我可以正常拍照,但是当我再次打开选择器时,相机视图出现,但是来自上一个拍摄的帧(图像)显示并冻结。如果我移动设备,图像不会改变。换句话说,我只能使用一次相机,但我不能使用两次。我做错了什么?在iOS6设备上,它完美地工作。

1个回答

4
我的建议是创建一个PickerDelegate类来解决问题。你只需要在构造函数中传递当前的VC,这样你就可以在VC中处理图像。 PickerDelegate是指选择器代理类。
private class pickerDelegate : UIImagePickerControllerDelegate
        {
            private yourVC _vc;

            public pickerDelegate (yourVC controller) : base ()
            {
                _vc = controller;
            }

            public override void FinishedPickingImage (UIImagePickerController picker, UIImage image, NSDictionary editingInfo)
            {
               //Do something whit the image
                _vc.someButton.SetBackgroundImage (image, UIControlState.Normal);

                //Dismiss the pickerVC
                picker.DismissViewController (true, null);
            }
        }

ViewDidLoad

imagePicker = new UIImagePickerController ();

//Set the Delegate and pass the current VC
imagePicker.Delegate = new pickerDelegate (this);

1
谢谢。从事件模型切换到委托模型,对我也有帮助。这是引领我来到这里并提供了一些额外信息的链接:https://dev59.com/23rZa4cB1Zd3GeqPyRhK#20503817 - schmidiii
你好,我遇到了同样的问题。我正在使用MvvmCross picturechooser插件。查看它们的源代码后,我发现他们使用了delegate,但是我的应用程序仍然存在这个问题?你能指导我吗? - SoftSan
一样的情况。看起来必须要解除。在iOS 9.1上只能使用一次相机。 - Leslie Godwin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接