diff options
Diffstat (limited to 'Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue773.cs')
-rw-r--r-- | Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue773.cs | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue773.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue773.cs new file mode 100644 index 00000000..f2ffc5f6 --- /dev/null +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue773.cs @@ -0,0 +1,174 @@ +using Xamarin.Forms.CustomAttributes; + +#if UITEST +using NUnit.Framework; +using Xamarin.UITest; +using Xamarin.UITest.Queries; +#endif + + +namespace Xamarin.Forms.Controls +{ + [Preserve (AllMembers=true)] + [Issue (IssueTracker.Github, 773, "Horizontal ScrollView locks after rotation", PlatformAffected.iOS)] + public class Issue773 : TestNavigationPage + { + protected override void Init () + { + PushAsync (new CannotScrollRepro ()); + } + +#if UITEST + [Test] + [Issue (IssueTracker.Github, 773, "Horizontal ScrollView locks after rotation - relayout correctly after rotation", PlatformAffected.iOS)] + [UiTest (typeof(ScrollView))] + public void Issue773TestsRotationRelayoutIssue () + { + RunningApp.SetOrientationLandscape (); + + var buttonLabels = new [] { + "Button 1", + "Button 2", + "Button 3", + }; + + foreach (string buttonLabel in buttonLabels) + RunningApp.WaitForElement (q => q.Button (buttonLabel)); + + RunningApp.Screenshot ("StackLayout in Modal respects rotation"); + + RunningApp.SetOrientationPortrait (); + } + + //[Test] + //[Issue (IssueTracker.Github, 773, "Horizontal ScrollView locks after rotation - can scroll after rotation", PlatformAffected.iOS)] + //[UiTest (typeof (ScrollView))] + //public void Issue773TestsScrollingBeforeAndAfterRotation () + //{ +// ScrollHorizontalForEnd (); +// App.WaitForElement (q => q.Marked ("I was clicked once!")); +// App.Screenshot ("Scrolling successful before rotation"); +// +// App.SetOrientationLandscape (); +// App.Tap (q => q.Marked ("Button 8")); +// App.WaitForElement (q => q.Marked ("I was clicked again!")); +// App.Screenshot ("Scrolling successful after rotation"); +// +// App.SetOrientationPortrait (); +// App.Screenshot ("Can scroll back to beginning"); +// +// ScrollHorizontalForBeginning (); +// App.Screenshot ("Can scroll back to beginning"); +// } + + //void ScrollHorizontalForEnd () + //{ + // int count = 0; + + // AppRect screenBounds = App.ScreenBounds (); + + // float scrollXStart = (4 / 5.0f) * screenBounds.Width; + // float scrollXEnd = screenBounds.Width / 5; + // float scrollY = App.Query (q => q.Marked ("Button 1"))[0].Rect.CenterY; + + // while (count < 4) { + // App.Pan (new Drag (screenBounds, scrollXStart, scrollY, scrollXEnd, scrollY, Drag.Direction.RightToLeft)); + // count++; + // } + + // App.Tap (q => q.Button ("Button 8")); + //} + + //void ScrollHorizontalForBeginning () + //{ + // int count = 0; + + // AppRect screenBounds = App.ScreenBounds (); + + // float scrollXStart = screenBounds.Width / 5; + // float scrollXEnd = (4 / 5.0f) * screenBounds.Width; + // float scrollY = App.Query (q => q.Button ("Button 8"))[0].Rect.CenterY; + + // while (count < 4) { + // App.Pan (new Drag (screenBounds, scrollXStart, scrollY, scrollXEnd, scrollY, Drag.Direction.LeftToRight)); + // count++; + // } + + // App.Tap (q => q.Button ("Button 1")); + + //} +#endif + } + + public class CannotScrollRepro : ContentPage + { + public CannotScrollRepro () + { + Title = "Nav Bar"; + + var layout = new StackLayout { + Padding = new Thickness (20), + BackgroundColor = Color.Gray + }; + + var button1 = new Button { Text = "Button 1" }; + var button2 = new Button { Text = "Button 2", IsEnabled = false }; + var button3 = new Button { Text = "Button 3", IsEnabled = false }; + var button4 = new Button { Text = "Button 4", IsEnabled = false }; + var button5 = new Button { Text = "Button 5", IsEnabled = false }; + var button6 = new Button { Text = "Button 6", IsEnabled = false }; + var button7 = new Button { Text = "Button 7", IsEnabled = false }; + var button8 = new Button { Text = "Button 8" }; + + var label = new Label { Text = "Not Clicked" }; + + var buttonStack = new StackLayout { + Padding = new Thickness (30, 0), + Orientation = StackOrientation.Horizontal, + Spacing = 30, + Children = { + button1, + button2, + button3, + button4, + button5, + button6, + button7, + button8, + } + }; + + button1.Clicked += (sender, args) => Navigation.PopModalAsync (); + + int count = 0; + button8.Clicked += (sender, e) => { + if (count == 0) { + label.Text = "I was clicked once!"; + count++; + } else if (count == 1) { + label.Text = "I was clicked again!"; + count++; + } else if (count == 2) { + label.Text = "I was clicked again again!"; + } + }; + + layout.Children.Add (new BoxView { + BackgroundColor = Color.Red, + VerticalOptions = LayoutOptions.FillAndExpand, + HorizontalOptions = LayoutOptions.FillAndExpand + }); + + layout.Children.Add (label); + + layout.Children.Add (new ScrollView { + BackgroundColor = Color.Aqua, + Orientation = ScrollOrientation.Horizontal, + HeightRequest = Device.OnPlatform (44, 44, 80), + Content = buttonStack + }); + + Content = layout; + } + } +} |