diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla44338.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla44338.cs new file mode 100644 index 000000000..54fef8293 --- /dev/null +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla44338.cs @@ -0,0 +1,45 @@ +using Xamarin.Forms.CustomAttributes; +using Xamarin.Forms.Internals; + +#if UITEST +using Xamarin.UITest; +using NUnit.Framework; +#endif + +namespace Xamarin.Forms.Controls.Issues +{ + [Preserve(AllMembers = true)] + [Issue(IssueTracker.Bugzilla, 44338, "Tapping off of a cell with an open context action causes a crash in iOS 10", PlatformAffected.iOS)] + public class Bugzilla44338 : TestContentPage + { + protected override void Init() + { + string[] items = new string[] { "A", "B", "C" }; + Content = new ListView + { + ItemsSource = items, + ItemTemplate = new DataTemplate(() => + { + var label = new Label(); + label.SetBinding(Label.TextProperty, "."); + var view = new ViewCell + { + View = new StackLayout + { + Children = + { + label + } + } + }; + view.ContextActions.Add(new MenuItem + { + Text = "Action", + Command = new Command(() => DisplayAlert("Alert", "Context Action Pressed", "Close")) + }); + return view; + }) + }; + } + } +} \ No newline at end of file diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems index 0e1f02971..5a62725a9 100644 --- a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems @@ -129,9 +129,11 @@ + + diff --git a/Xamarin.Forms.Platform.iOS/ContextScrollViewDelegate.cs b/Xamarin.Forms.Platform.iOS/ContextScrollViewDelegate.cs index bc04ede25..14f95a73d 100644 --- a/Xamarin.Forms.Platform.iOS/ContextScrollViewDelegate.cs +++ b/Xamarin.Forms.Platform.iOS/ContextScrollViewDelegate.cs @@ -210,7 +210,7 @@ namespace Xamarin.Forms.Platform.iOS void ClearCloserRecognizer(UIScrollView scrollView) { - if (_globalCloser == null) + if (_globalCloser == null || _globalCloser.State == UIGestureRecognizerState.Cancelled) return; var cell = GetContextCell(scrollView);