diff options
author | Minh Nguyễn <mxn@1ec5.org> | 2017-10-16 13:20:52 -0700 |
---|---|---|
committer | Minh Nguyễn <mxn@1ec5.org> | 2017-11-02 15:19:55 -0700 |
commit | 862f4fac231b8ae39dd3949f08888925b380e3a2 (patch) | |
tree | 4dd7fce368b26afd91cff16738d839529c9b1183 | |
parent | 4e5aecbcbc7aeee2841e5e867df72f3b27e129a0 (diff) | |
download | qtlocation-mapboxgl-862f4fac231b8ae39dd3949f08888925b380e3a2.tar.gz |
[ios] Delay zoom announcement
A 100-millisecond delay is enough for the post-zooming announcement to reflect the new zoom level rather than the previous zoom level.
-rw-r--r-- | platform/ios/src/MGLMapView.mm | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm index cadfd74b6e..c960c60c78 100644 --- a/platform/ios/src/MGLMapView.mm +++ b/platform/ios/src/MGLMapView.mm @@ -277,6 +277,7 @@ public: NS_ARRAY_OF(id <MGLFeature>) *_visiblePlaceFeatures; NS_ARRAY_OF(id <MGLFeature>) *_visibleRoadFeatures; NS_MUTABLE_SET_OF(MGLFeatureAccessibilityElement *) *_featureAccessibilityElements; + BOOL _accessibilityValueAnnouncementIsPending; MGLReachability *_reachability; } @@ -2821,10 +2822,11 @@ public: { centerPoint = self.userLocationAnnotationViewCenter; } - _mbglMap->setZoom(_mbglMap->getZoom() + log2(scaleFactor), mbgl::ScreenCoordinate { centerPoint.x, centerPoint.y }); + double newZoom = round(self.zoomLevel) + log2(scaleFactor); + _mbglMap->setZoom(newZoom, mbgl::ScreenCoordinate { centerPoint.x, centerPoint.y }); [self unrotateIfNeededForGesture]; - UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, self.accessibilityValue); + _accessibilityValueAnnouncementIsPending = YES; } #pragma mark - Geography - @@ -5387,12 +5389,23 @@ public: _featureAccessibilityElements = nil; _visiblePlaceFeatures = nil; _visibleRoadFeatures = nil; - UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil); + if (_accessibilityValueAnnouncementIsPending) { + _accessibilityValueAnnouncementIsPending = NO; + [self performSelector:@selector(announceAccessibilityValue) withObject:nil afterDelay:0.1]; + } else { + UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil); + } } [self.delegate mapView:self regionDidChangeAnimated:animated]; } } +- (void)announceAccessibilityValue +{ + UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, self.accessibilityValue); + UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil); +} + - (void)mapViewWillStartLoadingMap { if (!_mbglMap) { return; |