2012-05-17 49 views
8

我有一個UITableView,我在loadView中構建。我在loadView中做的一件事是創建一個UIView作爲表頭,並填入UIImageView。圖片視圖包含一個圖片,這是一個風格化的標題,所以我想爲VoiceOver用戶添加輔助功能標籤。但是,爲了讀取標籤,我無法讓VoiceOver「聚焦」圖像,而輔助功能檢查器沒有響應單擊模擬器中的圖像。我(略)的代碼如下:在UITableView標題中包含的UIImageView上設置accessibilityLabel

... 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 ... 

我在gdb通過加強和accessibilityLabelForTitleImage返回一個字符串。 po [titleImageView accessibilityLabel]會打印出正確的字符串,但我仍然無法專注於圖像視圖。請注意,視圖本身會顯示並作出適當的響應。

我錯過了什麼嗎?有沒有辦法強制VoiceOver確認圖像視圖?

+0

你這樣做了嗎? imageView.userInteractionEnabled = YES; –

+0

不,我沒有意識到VoiceOver被視爲以這種方式進行交互。讓我來試試吧... – kevboh

+0

不,userInteractionEnabled''設置爲YES(適用於攝像畫面和其父)不會讓我關注。 – kevboh

回答

13

在配音,爲了使一個元素訪問: -

  1. 你必須設置setIsAccessibilityElement屬性爲true,我不會在你的代碼中找到。

  2. 另一個重要的問題是,要使子元素(子視圖)可以訪問,您必須單獨使其可訪問,而父母不應該可訪問(您也必須指定這一點)。

  3. 在您的自定義單元中實現UIAccessibilityContainer協議。

這將是一個大的故事,如果我去的。請參閱此Accessibility voice over by apple

希望這會有所幫助。

+2

設置'isAccessibilityElement'到真正的做到了。我閱讀了文檔 - 不能相信我錯過了它。謝謝! – kevboh

+0

有時會發生......祝你好運btw –

3

我用KIF來測試我的IOS應用程序。在我的tableview中,我將值賦給tableview.accesssibilityIdentifier而不是tableview.accessibilityLabel。它爲我工作。想嘗試一下嗎?

相關問題