summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMinh Nguyễn <mxn@1ec5.org>2017-10-16 13:20:52 -0700
committerMinh Nguyễn <mxn@1ec5.org>2017-11-02 15:19:55 -0700
commit862f4fac231b8ae39dd3949f08888925b380e3a2 (patch)
tree4dd7fce368b26afd91cff16738d839529c9b1183
parent4e5aecbcbc7aeee2841e5e867df72f3b27e129a0 (diff)
downloadqtlocation-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.mm19
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;