From 6de1afc2a91bd8adb5bbf5fc384f9f6f36961d3c Mon Sep 17 00:00:00 2001 From: Rossen Hristov Date: Thu, 17 Mar 2016 17:08:39 +0200 Subject: [PATCH] Going back with the stock "Back" button on iOS will now respect the animated setting used when coming to the current page Fixes #1787 --- ui/frame/frame.ios.ts | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/ui/frame/frame.ios.ts b/ui/frame/frame.ios.ts index 908517bb5..45d5fee0b 100644 --- a/ui/frame/frame.ios.ts +++ b/ui/frame/frame.ios.ts @@ -70,9 +70,15 @@ export class Frame extends frameCommon.Frame { navDepth++; var animated = this.currentPage ? this._getIsAnimatedNavigation(backstackEntry.entry) : false; - var navigationTransition = this._getNavigationTransition(backstackEntry.entry); - if (animated && navigationTransition) { - viewController[TRANSITION] = navigationTransition; + if (animated) { + var navigationTransition = this._getNavigationTransition(backstackEntry.entry); + if (navigationTransition) { + viewController[TRANSITION] = navigationTransition; + } + } + else { + //https://github.com/NativeScript/NativeScript/issues/1787 + viewController[TRANSITION] = { name: "non-animated" }; } backstackEntry[NAV_DEPTH] = navDepth; @@ -551,6 +557,11 @@ class UINavigationControllerImpl extends UINavigationController implements UINav return super.popViewControllerAnimated(animated); } + if (navigationTransition.name === "non-animated") { + //https://github.com/NativeScript/NativeScript/issues/1787 + return super.popViewControllerAnimated(false); + } + var nativeTransition = _getNativeTransition(navigationTransition, false); if (!nativeTransition) { return super.popViewControllerAnimated(animated); @@ -579,6 +590,11 @@ class UINavigationControllerImpl extends UINavigationController implements UINav return super.popToViewControllerAnimated(viewController, animated); } + if (navigationTransition.name === "non-animated") { + //https://github.com/NativeScript/NativeScript/issues/1787 + return super.popToViewControllerAnimated(viewController, false); + } + var nativeTransition = _getNativeTransition(navigationTransition, false); if (!nativeTransition) { return super.popToViewControllerAnimated(viewController, animated);