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)); }