AccessibilityUIExamples/Table/CustomTableView.m
/* |
See LICENSE folder for this sample’s licensing information. |
Abstract: |
Category for adoption on NSAccessibilityTable. |
*/ |
#import "AccessibilityUIExamples-Swift.h" |
@interface CustomTableView (Accessibility) <NSAccessibilityTable> |
@end |
@implementation CustomTableView (Accessibility) |
- (void)setAccessibilitySelectedRows:(NSArray *)selectedRows { |
if ([selectedRows count] == 1) { |
NSArray *accessibilityRows = self.accessibilityRows; |
NSInteger index = [accessibilityRows indexOfObject:[selectedRows lastObject]]; |
self.selectedRow = index; |
} |
} |
- (NSArray *)accessibilitySelectedRows { |
NSArray *accessiblityRows = [self accessibilityRows]; |
return @[accessiblityRows[self.selectedRow]]; |
} |
- (NSArray *)accessibilityRows { |
NSInteger row, col; |
NSAccessibilityElement *rowElement, *cellElement; |
NSArray *rowData; |
NSString *cellText; |
NSMutableArray *accessibilityRows = [[NSMutableArray alloc] initWithCapacity:CustomTableView.TableRowCount]; |
for (row = 0; row < CustomTableView.TableRowCount; row++) { |
rowData = self.tableData[row]; |
rowElement = [NSAccessibilityElement new]; |
rowElement.accessibilityParent = self; |
rowElement.accessibilityRole = NSAccessibilityRowRole; |
rowElement.accessibilitySubrole = NSAccessibilityTableRowSubrole; |
rowElement.accessibilityFrameInParentSpace = [self rectWithRow:row]; |
rowElement.accessibilityIndex = row; |
for (col = 0; col < CustomTableView.TableColumnCount; col++) { |
cellText = rowData[col]; |
cellElement = [NSAccessibilityElement new]; |
cellElement.accessibilityRole = NSAccessibilityStaticTextRole; |
cellElement.accessibilityLabel = cellText; |
cellElement.accessibilityFrameInParentSpace = [self rectForCellInRowCoordsWithRow:row column:col]; |
[rowElement accessibilityAddChildElement:cellElement]; |
} |
[accessibilityRows addObject:rowElement]; |
} |
self.ourAccessibilityRows = accessibilityRows; |
return self.ourAccessibilityRows; |
} |
@end |
Copyright © 2017 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2017-09-12