diff --git a/iphone/Maps/UI/PlacePage/PlacePageInteractor.swift b/iphone/Maps/UI/PlacePage/PlacePageInteractor.swift index 5d78380cf..a0f056fd4 100644 --- a/iphone/Maps/UI/PlacePage/PlacePageInteractor.swift +++ b/iphone/Maps/UI/PlacePage/PlacePageInteractor.swift @@ -1,5 +1,6 @@ protocol PlacePageInteractorProtocol: AnyObject { func viewWillAppear() + func viewWillDisappear() func updateTopBound(_ bound: CGFloat, duration: TimeInterval) } @@ -19,12 +20,11 @@ class PlacePageInteractor: NSObject { self.mapViewController = mapViewController super.init() addToBookmarksManagerObserverList() - subscribeOnTrackActivePointUpdates() + subscribeOnTrackActivePointUpdatesIfNeeded() } deinit { removeFromBookmarksManagerObserverList() - unsubscribeFromTrackActivePointUpdates() } private func updatePlacePageIfNeeded() { @@ -53,7 +53,8 @@ class PlacePageInteractor: NSObject { } } - private func subscribeOnTrackActivePointUpdates() { + private func subscribeOnTrackActivePointUpdatesIfNeeded() { + unsubscribeFromTrackActivePointUpdates() guard placePageData.objectType == .track, let trackData = placePageData.trackData else { return } bookmarksManager.setElevationActivePointChanged(trackData.trackId) { [weak self] distance in self?.trackActivePointPresenter?.updateActivePointDistance(distance) @@ -65,7 +66,6 @@ class PlacePageInteractor: NSObject { } private func unsubscribeFromTrackActivePointUpdates() { - guard placePageData.trackData?.onActivePointChangedHandler != nil else { return } bookmarksManager.resetElevationActivePointChanged() bookmarksManager.resetElevationMyPositionChanged() } @@ -89,6 +89,10 @@ extension PlacePageInteractor: PlacePageInteractorProtocol { updatePlacePageIfNeeded() } + func viewWillDisappear() { + unsubscribeFromTrackActivePointUpdates() + } + func updateTopBound(_ bound: CGFloat, duration: TimeInterval) { mapViewController?.setPlacePageTopBound(bound, duration: duration) } diff --git a/iphone/Maps/UI/PlacePage/PlacePageViewController.swift b/iphone/Maps/UI/PlacePage/PlacePageViewController.swift index e1ed42eca..37965519a 100644 --- a/iphone/Maps/UI/PlacePage/PlacePageViewController.swift +++ b/iphone/Maps/UI/PlacePage/PlacePageViewController.swift @@ -79,6 +79,11 @@ final class PlacePageScrollView: UIScrollView { updatePreviewOffset() } + override func viewWillDisappear(_ animated: Bool) { + super.viewWillDisappear(animated) + interactor?.viewWillDisappear() + } + override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { super.traitCollectionDidChange(previousTraitCollection) // Update layout when the device was rotated but skip when the appearance was changed.