.DismissModalViewController关闭我的所有页面。为什么呢?

时间:2017-08-18 22:29:08

标签: ios xamarin xamarin.ios xamarin.forms

我在我的xamarin表单中使用图像选择器,以便从图库中选择图像到我的程序... 但是,仅在IOS设备中,当我使用

关闭图像选择器时
imagePicker.DismissModalViewController(true);

我打开的所有弹出窗口都是用imagePicker关闭的...... 有人知道为什么吗?或者我如何解决这个问题? 我正在使用DependencyService在

中执行此操作

这是IOS项目中的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Foundation;
using UIKit;
using neoFly_Montana.iOS;
using Xamarin.Forms;
using neoFly_Montana.Interface;
using System.Threading.Tasks;
using System.IO;

[assembly: Dependency(typeof(PicturePickerImplementation))]
namespace neoFly_Montana.iOS
{
public class PicturePickerImplementation : IPicturePicker
{
    TaskCompletionSource<Stream> taskCompletionSource;
    UIImagePickerController imagePicker;

    public Task<Stream> GetImageStreamAsync()
    {
        // Create and define UIImagePickerController
        imagePicker = new UIImagePickerController
        {
            SourceType = UIImagePickerControllerSourceType.PhotoLibrary,
            MediaTypes = UIImagePickerController.AvailableMediaTypes(UIImagePickerControllerSourceType.PhotoLibrary)
        };

        // Set event handlers
        imagePicker.FinishedPickingMedia += OnImagePickerFinishedPickingMedia;
        imagePicker.Canceled += OnImagePickerCancelled;

        // Present UIImagePickerController;
        UIWindow window = UIApplication.SharedApplication.KeyWindow;
        var viewController = window.RootViewController;
        viewController.PresentModalViewController(imagePicker, true);

        // Return Task object
        taskCompletionSource = new TaskCompletionSource<Stream>();
        return taskCompletionSource.Task;
    }

    void OnImagePickerFinishedPickingMedia(object sender, UIImagePickerMediaPickedEventArgs args)
    {
        UIImage image = args.EditedImage ?? args.OriginalImage;

        if (image != null)
        {
            // Convert UIImage to .NET Stream object
            NSData data = image.AsJPEG(1);
            Stream stream = data.AsStream();

            // Set the Stream as the completion of the Task
            taskCompletionSource.SetResult(stream);
        }
        else
        {
            taskCompletionSource.SetResult(null);
        }
        imagePicker.DismissModalViewController(true);
    }

    void OnImagePickerCancelled(object sender, EventArgs args)
    {
        taskCompletionSource.SetResult(null);
        imagePicker.DismissModalViewController(true);
    }
}
}

我正在使用RG.PLUGIN.POPUP

0 个答案:

没有答案