diff --git a/iphone/Maps/Classes/MapViewController.mm b/iphone/Maps/Classes/MapViewController.mm index d11efe5030..bf16fa37f3 100644 --- a/iphone/Maps/Classes/MapViewController.mm +++ b/iphone/Maps/Classes/MapViewController.mm @@ -91,7 +91,7 @@ NSString *const kPP2BookmarkEditingSegue = @"PP2BookmarkEditing"; @property(nonatomic) BOOL needDeferFocusNotification; @property(nonatomic) BOOL deferredFocusValue; -@property(nonatomic) UIViewController *placePageVC; +@property(nonatomic) PlacePageViewController *placePageVC; @property(nonatomic) IBOutlet UIView *placePageContainer; @end @@ -140,12 +140,14 @@ NSString *const kPP2BookmarkEditingSegue = @"PP2BookmarkEditing"; } - (void)hideRegularPlacePage { - [self.placePageVC.view removeFromSuperview]; - [self.placePageVC willMoveToParentViewController:nil]; - [self.placePageVC removeFromParentViewController]; - self.placePageVC = nil; - self.placePageContainer.hidden = YES; - [self setPlacePageTopBound:0 duration:0]; + [self.placePageVC closeAnimatedWithCompletion:^{ + [self.placePageVC.view removeFromSuperview]; + [self.placePageVC willMoveToParentViewController:nil]; + [self.placePageVC removeFromParentViewController]; + self.placePageVC = nil; + self.placePageContainer.hidden = YES; + [self setPlacePageTopBound:0 duration:0]; + }]; } - (void)hidePlacePage { @@ -168,12 +170,17 @@ NSString *const kPP2BookmarkEditingSegue = @"PP2BookmarkEditing"; searchManager.state = MWMSearchManagerStateHidden; } } + // Always show the controls during the navigation or planning mode. + if (!isNavigationDashboardHidden) + self.controlsManager.hidden = NO; } - (void)onSwitchFullScreen { - BOOL const isNavigationDashboardHidden = [MWMNavigationDashboardManager sharedManager].state == MWMNavigationDashboardStateHidden; + BOOL const isNavigationDashboardHidden = MWMNavigationDashboardManager.sharedManager.state == MWMNavigationDashboardStateHidden; BOOL const isSearchHidden = MWMSearchManager.manager.state == MWMSearchManagerStateHidden; if (isSearchHidden && isNavigationDashboardHidden) { + if (!self.controlsManager.hidden) + [self dismissPlacePage]; self.controlsManager.hidden = !self.controlsManager.hidden; } } diff --git a/iphone/Maps/UI/PlacePage/PlacePageBuilder.swift b/iphone/Maps/UI/PlacePage/PlacePageBuilder.swift index 7a6c36ab38..337f7d4163 100644 --- a/iphone/Maps/UI/PlacePage/PlacePageBuilder.swift +++ b/iphone/Maps/UI/PlacePage/PlacePageBuilder.swift @@ -1,5 +1,5 @@ @objc class PlacePageBuilder: NSObject { - @objc static func build() -> UIViewController { + @objc static func build() -> PlacePageViewController { let storyboard = UIStoryboard.instance(.placePage) guard let viewController = storyboard.instantiateInitialViewController() as? PlacePageViewController else { fatalError() diff --git a/iphone/Maps/UI/PlacePage/PlacePagePresenter.swift b/iphone/Maps/UI/PlacePage/PlacePagePresenter.swift index f517e9ab99..fb1f12336f 100644 --- a/iphone/Maps/UI/PlacePage/PlacePagePresenter.swift +++ b/iphone/Maps/UI/PlacePage/PlacePagePresenter.swift @@ -33,7 +33,7 @@ extension PlacePagePresenter: PlacePagePresenterProtocol { } func closeAnimated() { - view.closeAnimated() + view.closeAnimated(completion: nil) } func updateTopBound(_ bound: CGFloat, duration: TimeInterval) { diff --git a/iphone/Maps/UI/PlacePage/PlacePageViewController.swift b/iphone/Maps/UI/PlacePage/PlacePageViewController.swift index dad112eb85..5ff069f5ed 100644 --- a/iphone/Maps/UI/PlacePage/PlacePageViewController.swift +++ b/iphone/Maps/UI/PlacePage/PlacePageViewController.swift @@ -2,7 +2,7 @@ protocol PlacePageViewProtocol: AnyObject { var presenter: PlacePagePresenterProtocol! { get set } func setLayout(_ layout: IPlacePageLayout) - func closeAnimated() + func closeAnimated(completion: (() -> Void)?) func updatePreviewOffset() func showNextStop() func layoutIfNeeded() @@ -312,11 +312,13 @@ extension PlacePageViewController: PlacePageViewProtocol { } } - func closeAnimated() { + @objc + func closeAnimated(completion: (() -> Void)? = nil) { alternativeSizeClass(iPhone: { self.scrollTo(CGPoint(x: 0, y: -self.scrollView.height + 1), forced: true) { self.rootViewController.dismissPlacePage() + completion?() } }, iPad: { UIView.animate(withDuration: kDefaultAnimationDuration, @@ -326,6 +328,7 @@ extension PlacePageViewController: PlacePageViewProtocol { self.view.alpha = 0 }) { complete in self.rootViewController.dismissPlacePage() + completion?() } }) }