diff options
author | E.Z. Hart <hartez@users.noreply.github.com> | 2016-11-22 10:01:20 -0700 |
---|---|---|
committer | Rui Marinho <me@ruimarinho.net> | 2016-11-22 17:01:20 +0000 |
commit | 5642dd58cda563ec6328495567a5505e24e392f3 (patch) | |
tree | 83bb9f9a481b9a8375357b205688ef539b6bc8a7 /Xamarin.Forms.Platform.iOS | |
parent | 9d831bbac2e6ccca369342823f50113802067ec4 (diff) | |
download | xamarin-forms-5642dd58cda563ec6328495567a5505e24e392f3.tar.gz xamarin-forms-5642dd58cda563ec6328495567a5505e24e392f3.tar.bz2 xamarin-forms-5642dd58cda563ec6328495567a5505e24e392f3.zip |
Fix broken alerts for iPad (#549)beta-2.3.4-pre1
* Fix broken alerts for iPad
* Remove unnecessary parameter and add null check
* Dropping test limit to 10 so we can get iOS passing
Diffstat (limited to 'Xamarin.Forms.Platform.iOS')
-rw-r--r-- | Xamarin.Forms.Platform.iOS/Platform.cs | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/Xamarin.Forms.Platform.iOS/Platform.cs b/Xamarin.Forms.Platform.iOS/Platform.cs index f39856b8..189faa76 100644 --- a/Xamarin.Forms.Platform.iOS/Platform.cs +++ b/Xamarin.Forms.Platform.iOS/Platform.cs @@ -75,7 +75,7 @@ namespace Xamarin.Forms.Platform.iOS if (Forms.IsiOS8OrNewer) { - PresentAlert(arguments, pageRenderer); + PresentAlert(arguments); } else { @@ -419,7 +419,7 @@ namespace Xamarin.Forms.Platform.iOS PresentAlert(window, alert); } - void PresentAlert(ActionSheetArguments arguments, IVisualElementRenderer pageRenderer) + void PresentAlert(ActionSheetArguments arguments) { var alert = UIAlertController.Create(arguments.Title, null, UIAlertControllerStyle.ActionSheet); var window = new UIWindow { BackgroundColor = Color.Transparent.ToUIColor() }; @@ -444,11 +444,21 @@ namespace Xamarin.Forms.Platform.iOS alert.AddAction(CreateActionWithWindowHide(blabel, UIAlertActionStyle.Default, () => arguments.SetResult(blabel), window)); } - if (UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Pad) + PresentAlert(window, alert, arguments); + } + + static void PresentAlert(UIWindow window, UIAlertController alert, ActionSheetArguments arguments = null) + { + window.RootViewController = new UIViewController(); + window.RootViewController.View.BackgroundColor = Color.Transparent.ToUIColor(); + window.WindowLevel = UIWindowLevel.Alert + 1; + window.MakeKeyAndVisible(); + + if (UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Pad && arguments != null) { UIDevice.CurrentDevice.BeginGeneratingDeviceOrientationNotifications(); var observer = NSNotificationCenter.DefaultCenter.AddObserver(UIDevice.OrientationDidChangeNotification, - n => { alert.PopoverPresentationController.SourceRect = pageRenderer.ViewController.View.Bounds; }); + n => { alert.PopoverPresentationController.SourceRect = window.RootViewController.View.Bounds; }); arguments.Result.Task.ContinueWith(t => { @@ -456,20 +466,11 @@ namespace Xamarin.Forms.Platform.iOS UIDevice.CurrentDevice.EndGeneratingDeviceOrientationNotifications(); }, TaskScheduler.FromCurrentSynchronizationContext()); - alert.PopoverPresentationController.SourceView = pageRenderer.ViewController.View; - alert.PopoverPresentationController.SourceRect = pageRenderer.ViewController.View.Bounds; + alert.PopoverPresentationController.SourceView = window.RootViewController.View; + alert.PopoverPresentationController.SourceRect = window.RootViewController.View.Bounds; alert.PopoverPresentationController.PermittedArrowDirections = 0; // No arrow } - PresentAlert(window, alert); - } - - static void PresentAlert(UIWindow window, UIAlertController alert) - { - window.RootViewController = new UIViewController(); - window.RootViewController.View.BackgroundColor = Color.Transparent.ToUIColor(); - window.WindowLevel = UIWindowLevel.Alert + 1; - window.MakeKeyAndVisible(); window.RootViewController.PresentViewController(alert, true, null); } |