diff options
author | Minh Nguyễn <mxn@1ec5.org> | 2016-06-03 15:12:52 -0700 |
---|---|---|
committer | Minh Nguyễn <mxn@1ec5.org> | 2016-06-03 15:13:21 -0700 |
commit | 1f622fe48f06127fe9ee88b1b52b219debc69a7c (patch) | |
tree | 70093073bc0a3a1d04b454e37f5510a6c0d605ef /platform/ios/src/MGLAnnotationView.mm | |
parent | 1fdda914e0af473513982ba0a1c014dc2166eb14 (diff) | |
download | qtlocation-mapboxgl-1f622fe48f06127fe9ee88b1b52b219debc69a7c.tar.gz |
[ios] Made annotation views accessible
Annotation views now serve as their own accessibility elements. The developer’s own subclass of MGLAnnotationView can customize the view’s accessibility frame and/or path to more accurately reflect the visual hit target.
Diffstat (limited to 'platform/ios/src/MGLAnnotationView.mm')
-rw-r--r-- | platform/ios/src/MGLAnnotationView.mm | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/platform/ios/src/MGLAnnotationView.mm b/platform/ios/src/MGLAnnotationView.mm index 6f1d94c3e7..31657dbf4e 100644 --- a/platform/ios/src/MGLAnnotationView.mm +++ b/platform/ios/src/MGLAnnotationView.mm @@ -1,6 +1,8 @@ #import "MGLAnnotationView.h" #import "MGLAnnotationView_Private.h" -#import "MGLMapView.h" +#import "MGLMapView_Internal.h" + +#import "NSBundle+MGLAdditions.h" #include <mbgl/util/constants.hpp> @@ -103,4 +105,43 @@ return [super actionForLayer:layer forKey:event]; } +#pragma mark UIAccessibility methods + +- (BOOL)isAccessibilityElement { + return !self.hidden; +} + +- (UIAccessibilityTraits)accessibilityTraits { + return UIAccessibilityTraitButton | UIAccessibilityTraitAdjustable; +} + +- (NSString *)accessibilityLabel { + return [self.annotation respondsToSelector:@selector(title)] ? self.annotation.title : super.accessibilityLabel; +} + +- (NSString *)accessibilityValue { + return [self.annotation respondsToSelector:@selector(subtitle)] ? self.annotation.subtitle : super.accessibilityValue; +} + +- (NSString *)accessibilityHint { + return NSLocalizedStringWithDefaultValue(@"ANNOTATION_A11Y_HINT", nil, nil, @"Shows more info", @"Accessibility hint"); +} + +- (CGRect)accessibilityFrame { + CGRect accessibilityFrame = self.frame; + CGRect minimumFrame = CGRectInset({ self.center, CGSizeZero }, + -MGLAnnotationAccessibilityElementMinimumSize.width / 2, + -MGLAnnotationAccessibilityElementMinimumSize.height / 2); + accessibilityFrame = CGRectUnion(accessibilityFrame, minimumFrame); + return accessibilityFrame; +} + +- (void)accessibilityIncrement { + [self.superview accessibilityIncrement]; +} + +- (void)accessibilityDecrement { + [self.superview accessibilityDecrement]; +} + @end
\ No newline at end of file |