Exemplo n.º 1
0
        static async Task <FileInfo> DoLaunchMediaPicker(UIImagePickerControllerSourceType sourceType, string mediaType, MediaCaptureSettings settings)
        {
            Log.For(typeof(Media)).Warning("DoLaunchMediaPicker called");
            var controller = UIRuntime.Window.RootViewController;

            while (controller.PresentedViewController != null)
            {
                controller = controller.PresentedViewController;
            }

            var pickerDelegate = new PickerDelegate(controller, sourceType);

            var picker = CreateController(pickerDelegate, sourceType, mediaType, settings);

            var usePopup = UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Pad &&
                           sourceType == UIImagePickerControllerSourceType.PhotoLibrary;

            if (usePopup)
            {
                pickerDelegate.Popover = new UIPopoverController(picker)
                {
                    Delegate = new PickerPopoverDelegate(pickerDelegate, picker)
                };
                pickerDelegate.DisplayPopover();
            }
            else
            {
                if (OS.IsAtLeastiOS(9))
                {
                    picker.ModalPresentationStyle = UIModalPresentationStyle.OverCurrentContext;
                }

                controller.PresentViewController(picker, animated: true, completionHandler: null);
            }

            return(await pickerDelegate.CompletionSource.Task.ConfigureAwait(false));
        }