diff --git a/Libraries/CustomComponents/Navigator/Navigator.js b/Libraries/CustomComponents/Navigator/Navigator.js index d37490a6019dbc..b6a5409fb269e4 100644 --- a/Libraries/CustomComponents/Navigator/Navigator.js +++ b/Libraries/CustomComponents/Navigator/Navigator.js @@ -458,6 +458,8 @@ var Navigator = React.createClass({ if (AnimationsDebugModule) { AnimationsDebugModule.stopRecordingFps(Date.now()); } + this._navBar && this._navBar.updatePointerEvents && + this._navBar.updatePointerEvents(this.state.transitionFromIndex, this.state.presentedIndex); this.state.transitionFromIndex = null; this.spring.setCurrentValue(0).setAtRest(); this._hideScenes(); diff --git a/Libraries/CustomComponents/Navigator/NavigatorNavigationBar.js b/Libraries/CustomComponents/Navigator/NavigatorNavigationBar.js index dd4a0e10b8abbe..1662b758c0d15c 100644 --- a/Libraries/CustomComponents/Navigator/NavigatorNavigationBar.js +++ b/Libraries/CustomComponents/Navigator/NavigatorNavigationBar.js @@ -211,7 +211,9 @@ var NavigatorNavigationBar = React.createClass({ ref={(ref) => { this._components[componentName] = this._components[componentName].set(route, ref); }} - pointerEvents="box-none" + pointerEvents={ + route === this.props.navigator.navigationContext.currentRoute ? 'box-none' : 'none' + } style={initialStage[componentName]}> {content} @@ -221,6 +223,19 @@ var NavigatorNavigationBar = React.createClass({ return rendered; }, + updatePointerEvents: function(fromIndex, toIndex) { + var routeFrom = this.props.navState.routeStack[fromIndex]; + var routeTo = this.props.navState.routeStack[toIndex]; + + COMPONENT_NAMES.forEach(function (componentName) { + var map = this._components[componentName]; + var componentFrom = map.get(routeFrom); + var componentTo = map.get(routeTo); + componentFrom && componentFrom.setNativeProps({ pointerEvents:'none' }); + componentTo && componentTo.setNativeProps({ pointerEvents:'box-none' }); + }, this); + }, + });