From 469251548187be22923c3cb7a4be6b117bbf83b0 Mon Sep 17 00:00:00 2001 From: Nedyalko Nikolov Date: Thu, 29 Oct 2015 09:23:42 +0200 Subject: [PATCH] Fixed fast navigation issues in iOS. --- ui/frame/frame-common.ts | 6 ++++++ ui/frame/frame.ios.ts | 5 ++++- ui/page/page.ios.ts | 3 ++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ui/frame/frame-common.ts b/ui/frame/frame-common.ts index 92d7676d1..dea195294 100644 --- a/ui/frame/frame-common.ts +++ b/ui/frame/frame-common.ts @@ -194,6 +194,12 @@ export class Frame extends view.CustomLayoutView implements definition.Frame { var navigationContext = this._navigationQueue[0]; this._processNavigationContext(navigationContext); } + + this._updateActionBar(); + } + + public navigationQueueIsEmpty() { + return this._navigationQueue.length === 0; } public _isEntryBackstackVisible(entry: definition.BackstackEntry): boolean { diff --git a/ui/frame/frame.ios.ts b/ui/frame/frame.ios.ts index 0f784b336..88612fb56 100644 --- a/ui/frame/frame.ios.ts +++ b/ui/frame/frame.ios.ts @@ -133,6 +133,9 @@ export class Frame extends frameCommon.Frame { var newValue = this._getNavBarVisible(page); this._ios.showNavigationBar = newValue; + if (this._ios.controller.navigationBar) { + this._ios.controller.navigationBar.userInteractionEnabled = this.navigationQueueIsEmpty(); + } } public _getNavBarVisible(page: pages.Page): boolean { @@ -314,7 +317,7 @@ class UINavigationControllerImpl extends UINavigationController implements UINav } } - var isBackNavigation = currentNavigationContext ? currentNavigationContext.isBackNavigation : false; + let isBackNavigation = currentNavigationContext ? currentNavigationContext.isBackNavigation : false; if (isBack) { try { diff --git a/ui/page/page.ios.ts b/ui/page/page.ios.ts index 6d7b5038b..6183266e0 100644 --- a/ui/page/page.ios.ts +++ b/ui/page/page.ios.ts @@ -151,6 +151,7 @@ export class Page extends pageCommon.Page { if (this._enableLoadedEvents) { super.onLoaded(); } + this._updateActionBar(false); } public notify(data: T) { @@ -260,7 +261,7 @@ export class Page extends pageCommon.Page { if (this._isModal && this._UIModalPresentationFormSheet && device.deviceType === DeviceType.Tablet) { statusBarHeight = 0; } - + if (this.frame && this.frame._getNavBarVisible(this)) { // Measure ActionBar with the full height. let actionBarSize = View.measureChild(this, this.actionBar, widthMeasureSpec, heightMeasureSpec);