Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

setting an accessibilityLabel on a UIImageView contained in UITableView header

I have a UITableView that I build in loadView. One of the things I do in loadView is create a UIView to act as the table header and stuff a UIImageView into it. The image view contains an image that is a stylized title, so I want to add an accessibility label for VoiceOver users. However, I can't get VoiceOver to "focus" on the image in order to read the label, and the Accessibility Inspector doesn't respond to clicking on the image in the simulator. My (abbreviated) code follows:

... in -loadView ...
// Make header view
UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(...)];
UIImageView *titleImageView = [[UIImageView alloc] initWithImage:[self titleImage]];
titleImageView.accessibilityLabel = [self accessibilityLabelForTitleImage];
[headerView addSubview:titleImageView];

// Make table view
self.tableView = [[UITableView alloc] initWithFrame:CGRect(...) style:UITableViewStylePlain];
self.tableView.tableHeaderView = headerView;
... code continues ...

I've stepped through in gdb and accessibilityLabelForTitleImage returns a string. po [titleImageView accessibilityLabel] prints out the correct string, but I'm still unable to focus on the image view. Note that the views themselves appear and respond as appropriate.

Am I missing something? Is there a way to force VoiceOver to acknowledge an image view?

like image 361
kevboh Avatar asked May 17 '12 20:05

kevboh


2 Answers

In Voice-Over , in order to make an element accessible :-

  1. you have to set setIsAccessibilityElement property as true which i don't find in your code.

  2. The other important point is that to make child elements (subviews) to be accessible , you have to seperately make them accessible while the parent should not be accessible(you have to specify this also).

  3. Implement the UIAccessibilityContainer Protocol in your custom - cell.

It will be a big story if i go on .Please refer this Accessibility voice over by apple.

Hope this helps.

like image 116
Abhishek Singh Avatar answered Oct 08 '22 05:10

Abhishek Singh


I used KIF for testing my IOS app. In my tableview, I assigned value to tableview.accesssibilityIdentifier instead of tableview.accessibilityLabel. It worked for me. Wanna give it a try?

like image 42
user1494912 Avatar answered Oct 08 '22 06:10

user1494912