Skip to content
This repository has been archived by the owner on May 1, 2024. It is now read-only.

Can't Intercept Software Back Button #1944

Open
AceCoderLaura opened this issue Feb 22, 2018 · 58 comments
Open

Can't Intercept Software Back Button #1944

AceCoderLaura opened this issue Feb 22, 2018 · 58 comments

Comments

@AceCoderLaura
Copy link

Description

Software back button doesn't use the same code paths as the hardware back button. This leads to unexpected behaviour on Android (and from what I've read, iOS).

Steps to Reproduce

  1. Override the "OnBackButtonPressed()" method on MasterDetailPage.
  2. Run application on Android and navigate to a detail page in the MasterDetailPage.
  3. Press the "Back" arrow on the command bar.

Expected Behavior

The "OnBackButtonPressed()" method should be invoked, same as when the hardware "back" button is pressed.

Actual Behavior

The method is not invoked.

Basic Information

  • Version with issue:
  • Last known good version: Unknown
  • IDE: Visual Studio 2017
  • Platform Target Frameworks:
    • Android: 8.0 Oreo
    • UWP: UWP 16299 (Works fine!)
  • Android Support Library Version: v7/v4
  • Nuget Packages:

NETStandard.Library {2.0.1} SQLite.Net.Standard
System.ServiceModel.Primitives {4.4.1} Adapt.Model.Helpdesk
NETStandard.Library {2.0.1} Adapt.Model.Helpdesk
System.Runtime.Serialization.Pri... {4.3.0} Adapt.Model.Helpdesk
System.ServiceModel.Http {4.4.1} Adapt.XivicClient.Standard
System.Reflection.TypeExtensions {4.4.0} Adapt.XivicClient.Standard
System.ServiceModel.Primitives {4.4.1} Adapt.XivicClient.Standard
NETStandard.Library {2.0.1} Adapt.XivicClient.Standard
System.Runtime.Serialization.Pri... {4.3.0} Adapt.XivicClient.Standard
System.ServiceModel.Primitives {4.4.1} Adapt.Model.Common.Standard
NETStandard.Library {2.0.1} Adapt.Model.Common.Standard
System.Runtime.Serialization.Pri... {4.3.0} Adapt.Model.Common.Standard
NETStandard.Library {2.0.1} Adapt.Presentation.Standard
Xamarin.Forms {2.5.0.280555} Adapt.Presentation.Standard
System.ServiceModel.Http {4.4.1} Adapt.XivicClient.Database.Standard
System.ServiceModel.Primitives {4.4.1} Adapt.XivicClient.Database.Standard
NETStandard.Library {2.0.1} Adapt.XivicClient.Database.Standard
System.Runtime.Serialization.Pri... {4.3.0} Adapt.XivicClient.Database.Standard
System.ServiceModel.Primitives {4.4.1} Adapt.Model.Whakatane
NETStandard.Library {2.0.1} Adapt.Model.Whakatane
System.Runtime.Serialization.Pri... {4.3.0} Adapt.Model.Whakatane
NETStandard.Library {2.0.1} Adapt.Business.Standard
Microsoft.CSharp {4.4.1} Adapt.Business.Standard
System.ServiceModel.Primitives {4.4.1} Adapt.Data.Generic.Standard
NETStandard.Library {2.0.1} Adapt.Data.Generic.Standard
System.Runtime.Serialization.Pri... {4.3.0} Adapt.Data.Generic.Standard
Xamarin.Forms.Maps {2.5.0.280555} Adapt.Presentation.XamarinForms
NETStandard.Library {2.0.1} Adapt.Presentation.XamarinForms
Syncfusion.Xamarin.SfDataGrid {15.4.0.20} Adapt.Presentation.XamarinForms
Xamarin.Forms {2.5.0.280555} Adapt.Presentation.XamarinForms
Xamarin.Android.Arch.Core.Common {1.0.0} Adapt.Presentation.Android
Xamarin.Android.Arch.Lifecycle.C... {1.0.1} Adapt.Presentation.Android
Xamarin.Android.Arch.Lifecycle.R... {1.0.0} Adapt.Presentation.Android
Xamarin.Android.Support.Animated... {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.Annotations {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.Compat {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.Core.UI {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.Core.Utils {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.Design {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.Fragment {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.Media.Co... {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.Transition {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.v4 {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.v7.AppCo... {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.v7.CardView {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.v7.Media... {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.v7.Palette {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.v7.Recyc... {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.Vector.D... {26.1.0.1} Adapt.Presentation.Android
Xamarin.Forms {2.5.0.280555} Adapt.Presentation.Android
Xamarin.Forms {2.5.0.280555} Adapt.Presentation.iOS
Microsoft.NETCore.UniversalWindo... {6.0.7} Adapt.Presentation.UWP
Xamarin.Forms {2.5.0.280555} Adapt.Presentation.UWP
Esri.ArcGISRuntime.Xamarin.Android {100.2.0} Adapt.Presentation.Xivic.Android
Esri.ArcGISRuntime.Xamarin.Forms {100.2.0} Adapt.Presentation.Xivic.Android
Microsoft.NETCore.Platforms {2.0.1} Adapt.Presentation.Xivic.Android
NETStandard.Library {2.0.1} Adapt.Presentation.Xivic.Android
Syncfusion.Xamarin.Core {15.4.0.20} Adapt.Presentation.Xivic.Android
Syncfusion.Xamarin.GridCommon {15.4.0.20} Adapt.Presentation.Xivic.Android
Syncfusion.Xamarin.SfDataGrid {15.4.0.20} Adapt.Presentation.Xivic.Android
Syncfusion.Xamarin.SfDataGrid.An... {15.4.0.20} Adapt.Presentation.Xivic.Android
Syncfusion.Xamarin.SfNumericTextBox {15.4.0.20} Adapt.Presentation.Xivic.Android
Syncfusion.Xamarin.SfNumericText... {15.4.0.20} Adapt.Presentation.Xivic.Android
Xamarin.Android.Arch.Core.Common {1.0.0} Adapt.Presentation.Xivic.Android
Xamarin.Android.Arch.Lifecycle.C... {1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Arch.Lifecycle.R... {1.0.0} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Animated... {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Annotations {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Compat {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Core.UI {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Core.Utils {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Design {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Fragment {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Media.Co... {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Transition {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.v4 {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.v7.AppCo... {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.v7.CardView {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.v7.Media... {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.v7.Palette {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.v7.Recyc... {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Vector.D... {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Build.Download {0.4.7} Adapt.Presentation.Xivic.Android
Xamarin.Forms {2.5.0.280555} Adapt.Presentation.Xivic.Android
Xamarin.Forms.Maps {2.5.0.280555} Adapt.Presentation.Xivic.Android
Xamarin.GooglePlayServices.Base {60.1142.0} Adapt.Presentation.Xivic.Android
Xamarin.GooglePlayServices.Basement {60.1142.0} Adapt.Presentation.Xivic.Android
Xamarin.GooglePlayServices.Maps {60.1142.0} Adapt.Presentation.Xivic.Android
Xamarin.GooglePlayServices.Tasks {60.1142.0} Adapt.Presentation.Xivic.Android
Esri.ArcGISRuntime.Xamarin.Forms {100.2.0} Adapt.Presentation.Xivic.iOS
Esri.ArcGISRuntime.Xamarin.iOS {100.2.0} Adapt.Presentation.Xivic.iOS
Syncfusion.Xamarin.Core {15.4.0.20} Adapt.Presentation.Xivic.iOS
Syncfusion.Xamarin.GridCommon {15.4.0.20} Adapt.Presentation.Xivic.iOS
Syncfusion.Xamarin.SfDataGrid {15.4.0.20} Adapt.Presentation.Xivic.iOS
Syncfusion.Xamarin.SfNumericTextBox {15.4.0.20} Adapt.Presentation.Xivic.iOS
Xamarin.Forms {2.5.0.280555} Adapt.Presentation.Xivic.iOS
Xamarin.Forms.Maps {2.5.0.280555} Adapt.Presentation.Xivic.iOS
Esri.ArcGISRuntime.UWP {100.2.0} Adapt.Presentation.Xivic.UWP
Esri.ArcGISRuntime.Xamarin.Forms {100.2.0} Adapt.Presentation.Xivic.UWP
Microsoft.NETCore.UniversalWindo... {6.0.7} Adapt.Presentation.Xivic.UWP
Syncfusion.Xamarin.SfDataGrid {15.4.0.20} Adapt.Presentation.Xivic.UWP
System.Runtime.Serialization.Pri... {4.3.0} Adapt.Presentation.Xivic.UWP
Xamarin.Forms.Maps {2.5.0.280555} Adapt.Presentation.Xivic.UWP

  • Affected Devices: HTC U11

Reproduction Link

Will provide if asked.

@pauldipietro pauldipietro added this to New in Triage Feb 22, 2018
@samhouts
Copy link
Member

We had a similar discussion here. Is this what you're looking for? https://forums.xamarin.com/discussion/100287/allow-a-single-place-to-handle-back-button-requests-with-async-support

@samhouts samhouts added t/enhancement ➕ s/needs-info ❓ A question has been asked that requires an answer before work can continue on this issue. labels Feb 22, 2018
@samhouts samhouts moved this from New to Needs Info in Triage Feb 22, 2018
@samhouts samhouts removed this from Needs Info in Triage Feb 22, 2018
@AceCoderLaura
Copy link
Author

@samhouts Yeah that's pretty much exactly our issue. The aforementioned callback needs to be added to the codebase or the existing method needs to be enhanced to include events from the software back button.

@MelbourneDeveloper
Copy link

MelbourneDeveloper commented Feb 25, 2018

@samhouts is this bug accepted yet? It's a big issue. What more information is needed?

@MSiccDev
Copy link

MSiccDev commented Mar 7, 2018

I agree in the point that OnBackButtonPressed should handle both Hard- and Software-BackButtonss. Nonetheless, it isn't that hard to interecept both of them. I blogged on that topic here: https://msicc.net/xamarin-forms-the-mvvmlight-toolkit-and-i-taking-control-over-the-back-buttons/

@AceCoderLaura
Copy link
Author

@MSiccDev If we keep working around the problems presented by the framework, then it'll never get fixed and people will have to keep doing this themselves over and over again until the death of the technology.

@MSiccDev
Copy link

MSiccDev commented Mar 8, 2018

@AceCoderLaura true on one side. On the other side, one has to move forward. Best thing is to work around but report the issue.

@AceCoderLaura
Copy link
Author

These workarounds break the hamburger menu on the root page...
-.-

@MSiccDev
Copy link

@AceCoderLaura I am using it in one of my apps with a MD-Page without any problems...

@AceCoderLaura
Copy link
Author

@MSiccDev
Here's my hacky workaround:

public override bool OnOptionsItemSelected(IMenuItem item) 
{ 
            //If it's not the "home" button continue as usual 
            var androidHomeId = 16908332; 
            if (item.ItemId != Resource.Id.home && item.ItemId != androidHomeId) return base.OnOptionsItemSelected(item); 
 
            var navigation = App.MainMasterDetailPage.Detail.Navigation; 
            if (navigation.NavigationStack.Count > 1) 
            { 
                //We can go back, do the arrow functionality 
                this.OnBackPressed();
                return true;
            } 
            else 
            { 
                //We're at the root, do the hamburger functionality 
                return App.MainMasterDetailPage.IsPresented = true; 
            } 
}

@samhouts samhouts added this to Backlog in Enhancements Apr 13, 2018
@NisuSan
Copy link

NisuSan commented Apr 25, 2018

@AceCoderLaura Are your OnOptionsItemSelected triggered after click on the nav-back button oO In my case, nothing happened...(Android)

@AtosNicoS
Copy link

Is there any progress for this issue? I have multiple nested navigationviews and it would be ultra hacky to patch this in my application. I aggree with @AceCoderLaura that this must be patched by xamarin.

@closetoyou293
Copy link

Same problem. I think it's quite common to handle back event in enterprise app. It should be fixed asap.

@ddobrev
Copy link

ddobrev commented Nov 14, 2018

Please fix this, it's been reported for close to a year, and it's ridiculous not to have it yet.

@andreinitescu
Copy link
Contributor

@ddobrev You're right this is a very useful feature, but unfortunately it hasn't even been clearly defined how it needs to work. Someone mentioned above it but it got no response:

Yeah that's pretty much exactly our issue. The aforementioned callback needs to be added to the codebase or the existing method needs to be enhanced to include events from the software back button.

Had this been clearly defined, I'd have tried to make a PR to implement it.

@skaman
Copy link
Contributor

skaman commented Dec 9, 2018

I dont know why, but in my case (on Android) was enough to add this to my MainActivity

        protected override void OnPostCreate(Bundle savedInstanceState)
        {
            var toolBar = FindViewById<global::Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
            SetSupportActionBar(toolBar);

            base.OnPostCreate(savedInstanceState);
        }

With this the OnBackButtonPressed is fired both even if i press the hardware back button and the software back button on the navigation bar. But i don't understand why.

On iOS I still had too add it myself with a custom Page renderer.

@samhouts samhouts moved this from Backlog to Needs Specification in Enhancements Jan 3, 2019
@samhouts samhouts added this to In Progress in v3.6.0 Jan 11, 2019
@samhouts samhouts removed this from Needs Specification in Enhancements Jan 11, 2019
@ddobrev
Copy link

ddobrev commented Feb 6, 2019

So, is this going to be fixed in 3.6.0?

@samhouts
Copy link
Member

samhouts commented Feb 6, 2019

I think it was moved to In Progress by mistake.

@samhouts samhouts removed this from In Progress in v3.6.0 Feb 6, 2019
@samhouts
Copy link
Member

Ok, team, we're now leaning towards the functionality described here: #6971 (comment)

Any objections?

@pikausp
Copy link

pikausp commented Feb 12, 2020

@samhouts I took a quick look at the linked issue and since I haven't used shell yet this is more of a question. BackButtonBehavior is just a wrapper (with some extras) around a command which gets executed a when a user attempts to navigate back?

Basically, it's not about intercepting the reverse navigation but instead taking control over what exactly happens when a user attempts to navigate back via any method available (swipe, navbar button, android button,..). I can decide to navigate the user to a new page instead of navigating back if I decide so, is that correct?

@samhouts samhouts moved this from Needs Design Review to Under consideration-High Interest in Enhancements Feb 12, 2020
@nschoenberg
Copy link

nschoenberg commented Feb 13, 2020

@samhouts I have a working interception in my production app for iOS uwp and Android. iOS and Android using custom Page renderer. When User naviagtes back via Software or Hardware Back-Button I can Show Pop-up "Discard Changes?". When the User confirms the prompt, Back navigation ist executed and Page gets popped, otherweise User stays on current Page. I have Not yet considred that swiping ist also possible to Go Back, thats Missing in my Implementation

@gkarabin
Copy link

@samhouts - It's not clear to me how the proposal allows interception of the back button to add a conditional step.

Does the proposal work like this?

  • if {Shell, NaviationPage}.BackButtonCommand is not assigned, the back button behaves normally and back navigation occurs automatically.
  • If {Shell, NaviationPage}.BackButtonCommand is assigned, then no back navigation occurs automatically. The assigned ICommand instance may explicitly do something like this, depending on whether or not you are using Shell or not.
async Task MyProcessBackButton(bool usingShell)
{
    bool navigateBack = await DisplayAlert("Cancel?", "Undo changes", "Yes", "No");
    var mainPage = usingShell ? (Page)Shell.Current : Application.Current.MainPage;
    if (mainPage is MasterDetailPage mdPage) mainPage = mdPage.Detail;
    if (navigateBack) await mainPage.Navigation.PopAsync();
}

Something like that should work for me but it seems cumbersome. Maybe I'm not looking at the proposal right. It would help to see the use cases spelled out with examples.

P.S. Like @nschoenberg, I also have interception with custom renders in my apps (on NavigationPage, doing something like the MyProcessBackButton method above. It is nice that the proposal is not requiring Shell - it will allow easier adoption for our older apps).

@LeoJHarris
Copy link

LeoJHarris commented Feb 13, 2020

  • if {Shell, NaviationPage}.BackButtonCommand is not assigned, the back button behaves normally and back navigation occurs automatically.

This is how I would imagine it to work, often we want the default functionality if not overriden. This would behave the same as overriding the device back button on android and returning true. Doesnt it make sense to replicate that implemenation in someway?

As a Page feature would something like this make sense? It would be immensely helpful if we were able to observe and cancel reverse navigation (hence the Task). Also, it might be handy to be able to distinguish what caused the request to navigate back.

enum ReverseNavigationSourceType {
    Unspecified,
    HwButton,
    Navbar,
    Gesture
}

class ReverseNavigationEventArgs {
    public ReverseNavigationSourceType SourceType { get; }
    public object Source { get; }
}

class Page {
    public virtual Task<bool> OnNavigatingBack(ReverseNavigationEventArgs args) {
        return Task.FromResult(true);
    }
}

Second feasible option I can see is implementing this as a part of INavigation interface.

EDIT: slightly modified the API

In the issue #6971 (comment), I am not sure exactly where the BackButtonCommand will be exposed, is provided only on NavigationPage? Is there a single implemation on a containing NavigationPage and all pages pushed onto the that navigation stack use the same behaviour? (I dont feel this would be a typical use case). How do individual pages implement their own override and take advantage of the command?

I think the proposal provided above would satisfy the developers needs to override per page, since the invocation of back navigation is some what irrelevant often the dev wants to simply control what takes place on the back navigation i.e. prompt some user dialog prior to send them to another page or simply leave as default.

I cant speak for everyone but we have instances in projects where we implemented some function that get excecuted if software button pressed, we also override the OnBackButtonPressed that calls the same function. Two forms of back navigation executing the same code.

@PureWeen
Copy link
Contributor

These properties all work the same as any of the attached properties on NavigationPage

https://github.com/xamarin/Xamarin.Forms/blob/master/Xamarin.Forms.Core/NavigationPage.cs#L19

You can just apply them to the active page and the NavigationPage reacts. The attached properties are nice because they are bindable so you can just set it up on a page and bind it into the VM.

<ContentPage NavigationPage.BackButtonCommand={Bindiing BackCommand}

One of the advantages of having the command just "disable" the default behavior is that it enables async navigating. Because now the button just routes to the command and the command can do whatever for as long as it wants and then it can use navigation apis to complete the navigation if it wants to.

Making it all async is interesting mainly because of scenarios like swiping back or swipe to dismiss on a modal because those aren't natively "async" so what we could also do here is tap into those gestures, route to the command, and cancel the gesture.

We could also make it an event on the Navigation class which could fire all the way up the hierarchical proxy and then with an event you could use an EventToCommand Behavior.

I do also wonder if NavigatingBack makes sense. If we're going to have something like that the might as well just create a navigating event similar to shell.

I realize this is a bit rambling :-) but just wanted to answer some question and get some ideas down for discussion

@LeoJHarris
Copy link

LeoJHarris commented Feb 14, 2020

You can just apply them to the active page and the NavigationPage reacts. The attached properties are nice because they are bindable so you can just set it up on a page and bind it into the VM.

<ContentPage NavigationPage.BackButtonCommand={Bindiing BackCommand}

@PureWeen sorry forgot accessing properties was possible on a pages that way & that makes sense to do it that way anyway.

Would the NavigationPage.BackButtonCommand consume the device back button also or just software back button? Since there are other ways of invoking back navigation.

@PureWeen
Copy link
Contributor

Currently I'm thinking NavigationPage.BackButtonCommand goes away and we have something more generalized. Just need to give it a bit more thought.

Something tied to pop/push might make sense and match existing apis

Not these exactly but something along these lines

UserRequestedPoppingCommand
UserRequestedPushingCommand

Or possibly PoppingCommand and PushingCommand and then we can have something similar to your arguments that give context.

enum NavigationSourceType {
    Unspecified,
    HwButton,
    Navbar,
    Gesture,
     FromCode
}

I'd like to make it all bindable as well but I haven't quite clicked into an idea I super like yet.

Perhaps something on Navigation that indicates current state of navigation?
So if it's done via command you can ask Navigation if it's a gesture in progress or other

@akemper1
Copy link

Any update on this? We have been waiting on this for over a year.

@SebastianKruseWago

This comment has been minimized.

@akemper1

This comment has been minimized.

@SebastianKruseWago

This comment has been minimized.

@scriptBoris
Copy link

Hello, is there any news?

@LeoJHarris
Copy link

LeoJHarris commented Feb 27, 2020

@scriptBoris Possible work arounds are as followed in these links, one solution might fit better then the other depending on your project structure.

https://forums.xamarin.com/discussion/67854/android-menu-and-back-button-not-working

https://theconfuzedsourcecode.wordpress.com/2017/03/12/lets-override-navigation-bar-back-button-click-in-xamarin-forms/

Ive gotten both solutions from the links in seperate projects.

@scriptBoris
Copy link

Good afternoon, I apologize for disturbing you, but is there any news to solve this problem? О.О

@scriptBoris
Copy link

I am updating the question :)

@albrecht-jun-zhang
Copy link

albrecht-jun-zhang commented Apr 17, 2020

<ContentPage NavigationPage.HasBackButton="False">

@akemper1
Copy link

Is there any update on this? The solutions presented in this thread are more than acceptable, its been years and people are waiting for this.

@akemper1
Copy link

akemper1 commented May 6, 2020

Can anyone from the Xamarin team comment on the status of this? This really is a big issue for many people.

I know you can do this in shell, but for many larger apps that take advantage of Prism or MVVMCross shell is not fully supported so this is something we really need.

Thanks

@PureWeen
Copy link
Contributor

PureWeen commented May 6, 2020

Apologies @akemper1 but no specific updates currently.

We haven't forgot about this one but are just a bit delayed on an official API to settle on. There are some pending Shell PRs that influence Back Button that will propagate over to the APIs used here

@Saturn
Copy link

Saturn commented Aug 10, 2020

I agree with many that are saying this is a big issue for them.

I am going to give some of the workarounds a try though. I just want to be able to prevent a user going back until they "confirm" that they will lose changes on the page they are on.

@skaman
Copy link
Contributor

skaman commented Sep 2, 2020

any news about this? it's been a really long time :(

@scriptBoris
Copy link

Hi team Xamarin.Forms, is there any news on this issue?

@scriptBoris
Copy link

3 years have passed, Xamarin.Forms 5 is released, and the problem has not yet been resolved.
Bravo! Hamarin team in all its glory!

@Saturn
Copy link

Saturn commented Jan 15, 2021

I will say this is also an annoyance for us too. I was hoping it may be a very much desired feature so it could have been prioritised more. But, not sure where it stands at the moment.

@scriptBoris
Copy link

Hi comrades, I'm tired of waiting for Microsoft. I made it possible to intercept the action Software backbutton (android, iOS)
https://github.com/scriptBoris/NavigationSam

@polotto
Copy link

polotto commented Dec 3, 2021

Amazing library @scriptBoris!!! Thank you.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
Enhancements
  
Under consideration-High Interest
Development

No branches or pull requests