Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.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
Ios UIImagePickerController正在显示上次单击的图像。我正在使用Monotouch/Xamarin Studio_Ios_Xamarin.ios_Xamarin - Fatal编程技术网

Ios UIImagePickerController正在显示上次单击的图像。我正在使用Monotouch/Xamarin Studio

Ios UIImagePickerController正在显示上次单击的图像。我正在使用Monotouch/Xamarin Studio,ios,xamarin.ios,xamarin,Ios,Xamarin.ios,Xamarin,在我的项目中,当我第一次启动相机时,它工作正常。当我第二次启动相机时,我看到上次在取景器中点击的图像。我不确定这是什么原因造成的 有人能帮我吗 以下是启动摄像头的代码块: UIImagePickerController imagePicker = new UIImagePickerController(); // Handle media selected. var documentsDirectory = Environment.GetFolde

在我的项目中,当我第一次启动相机时,它工作正常。当我第二次启动相机时,我看到上次在取景器中点击的图像。我不确定这是什么原因造成的

有人能帮我吗

以下是启动摄像头的代码块:

        UIImagePickerController imagePicker = new UIImagePickerController();
        // Handle media selected.
        var documentsDirectory = Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments);
        imagePicker.FinishedPickingMedia += (sender, e) => {
            UIImage image = (UIImage)e.Info.ObjectForKey(
                new NSString("UIImagePickerControllerOriginalImage"));

            if (image != null)
            {
                this.InvokeOnMainThread(() => {
                    this.clickedImage.Image = image;
                    image.SaveToPhotosAlbum(delegate(UIImage img, NSError err){ 
                    });
                    string pngFilename = System.IO.Path.Combine (documentsDirectory, "Photo.png"); // hardcoded filename, overwrites each time
                    NSData imgData = image.AsPNG();
                    NSError SaveErr = null;
                    if (imgData.Save(pngFilename, false, out SaveErr))
                    {
                        Console.WriteLine("saved as " + pngFilename);
                    } else {
                        Console.WriteLine("NOT saved as" + pngFilename + " because" + SaveErr.LocalizedDescription);
                    }
                });
            }

            DismissViewController(true,null);

        };

        // Handle cancellation of picker.
        imagePicker.Canceled += (sender, e) => {
            DismissViewController(true,null);

        };



        btnCameraDisplay1.SetTitle("Take Picture", UIControlState.Normal);
        btnCameraDisplay1.Font = UIFont.SystemFontOfSize(19);
        btnCameraDisplay1.SetTitleColor(UIColor.Black, UIControlState.Normal);

        btnCameraDisplay1.TouchUpInside += delegate(object sender, EventArgs e)
        {
            if(UIImagePickerController.IsSourceTypeAvailable(UIImagePickerControllerSourceType.Camera))
            {
                imagePicker.SourceType = UIImagePickerControllerSourceType.Camera;
                imagePicker.AllowsEditing = false;
                this.PresentViewController(imagePicker, true,null);
            }
            else{
                alertView = new UIAlertView();
                alertView.AddButton("OK");
                alertView.Message = "No camera available in this device.";
                alertView.AlertViewStyle = UIAlertViewStyle.Default;
                alertView.Show();
            }
        };

我遇到了同样的问题。在这里搜索Stackoverflow有助于:

  • Xamarins对FinishedPickingMedia事件的实现可能存在问题。(从这里开始)
解决方案: 从事件系统切换到代理,如下所述:

因此,基本上将代码从:

imagePicker.FinishedPickingMedia += (sender, e) => {}
要使用新的UIImagePickerController委派方法,请执行以下操作:

public override void FinishedPickingMedia (UIImagePickerController picker, NSDictionary info)
    {}

请张贴您用于启动摄像头控件的代码。仅附上上面的代码…需要更多信息。“您看到finder中单击的最后一张图像”是什么意思?上面的代码(全部)只调用一次吗?还是你要多次调用它?我在屏幕上有btnCameraDisplay1按钮。我点击按钮相机启动。单击照片后,我选择使用照片并从相机启动的地方返回到我的原始屏幕。现在,我再次点击相同的btnCameraDisplay1按钮,这一次相机是用最后点击的图像启动的。请让我知道,如果你需要更多关于这方面的信息。