I just noticed a odd behavior when using the interactivePopGestureRecognizer to go back in my app.
Case scenario:
1) User Drags view from left to right he goes back one view "interactivePopGestureRecognizer". 2) User swipes up or down "await Navigation.PopAsync(false);" is called and user goes back one view. 3) if User does action "1" and then calls a new view and tries to go-back using action 2 a blank view is displayed.
This error is only appearing if the user uses action 1 and then tries to use action 2; app works fine if action 1 is never used or if only action 1 is used, no both.
I am using Xamarin.Forms and I tried to used "interactivePopGestureRecognizer.enabled = false", but I get an error every-time I tried. is there a difference between the two back navigations?
-------------UPDATE----------
After reading a lot and looking in the internet I found out that ~interactivePopGestureRecognizer.enabled = false only works if you use it inside the ~ViewWillAppear I created a custom renderer that applies this to every tableView in my app. I would still want to figure out why is the back swipe acting this way.
----UPDATE 2--- Just pressing the back button and then trying to call navigation.popasync is giving me a blank page too. this seems to be an error between Xamarin.Navigation and the iOS back function.
Page:
MessagingCenter.Subscribe<string>(this, "UpSwipe", async (sender) =>
{
try
{
//await Navigation.PopAsync(false);
Navigation.RemovePage(this);
}
catch (Exception e)
{
await DisplayAlert("IsLoading", e.ToString(), "OK");
}
});
MessagingCenter.Subscribe<string>(this, "DownSwipe", async (sender) =>
{
try
{
//await Navigation.PopAsync(false);
Navigation.RemovePage(this);
}
catch (Exception e)
{
await DisplayAlert("IsLoading", e.ToString(), "OK");
}
});
Renderer:
private void UpdateUp()
{
// Insert view of DetailLeft element into subview
// Add button to open Detail to parent navbar, if not yet there
// Add gesture recognizer for left swipe
//Console.WriteLine ("Left swipe");
if (!buttons[2].Selected && !buttons[1].Selected)
{
MessagingCenter.Send("Swiped Up", "UpSwipe");
}
}
private void UpdateDown()
{
// Insert view of DetailLeft element into subview
// Add button to open Detail to parent navbar, if not yet there
// Add gesture recognizer for left swipe
//Console.WriteLine ("Left swipe");
if (!buttons[2].Selected && !buttons[1].Selected)
{
MessagingCenter.Send("Swiped Down", "DownSwipe");
}
}
After hours of debugging I fixed my issue by adding a return statement inside my renderer. I was checking and adding some gestureRecognizers in my renderer so a return was not needed until this bug came out.
protected override void OnElementChanged (ElementChangedEventArgs<LRMasterDetailPage> e)
{
base.OnElementChanged (e);
if (e.OldElement != null)
{
return;
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.