From 1f622fe48f06127fe9ee88b1b52b219debc69a7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Minh=20Nguye=CC=82=CC=83n?= Date: Fri, 3 Jun 2016 15:12:52 -0700 Subject: [ios] Made annotation views accessible MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- platform/ios/src/MGLAnnotationView.mm | 43 ++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) (limited to 'platform/ios/src/MGLAnnotationView.mm') 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 @@ -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 -- cgit v1.2.1