2011-09-22 78 views
15

我將VoiceOver支持添加到我的應用程序。到目前爲止,這麼好,但我真的希望能夠指定哪個元素是在UIAccessibilityScreenChangedNotification之後說出的第一個元素。我還沒有看到有辦法做到這一點。製作摘要元素似乎並不是真的。我錯過了什麼嗎?初始VoiceOver選擇

回答

0

如何使用UIAccessibilityAnnouncementNotification?

+0

這聽起來像是處理暫時的Game Center通知的方式:「使用此通知來提供有關不更新應用程序用戶界面(UI)或僅更新UI的事件的可訪問性信息。」我想專注於特定的UI元素。 –

+0

嗯,我開始認爲我可能必須這樣做,但它確實不是正確的答案。 (在某些情況下,下一次滑動將顯示在被聚焦的元素上,因此您將再次聽到它的聲音。) –

+0

視圖第一次出現時使用通知通知的另一個缺點是它的讀數通常被最初的VoiceOver選擇截斷。 – MusiGenesis

2

我不認爲有一個API值指定了讀取的順序,除了在啓動時使用Summary Element值之外 - 這是設計。

因此,您將不得不測試UIKit元素或任何自定義控件的順序和默認值,因爲它取決於您的設計。您還可以將項目標記爲不可訪問的元素,以便它們不會被「讀取」,默認情況下會讀取可訪問的元素,以及用於訪問元素的容器,以便您更好地控制預期的交互。我不知道是否選擇該項目會有所幫助。

我認爲您已在使用Accessibility Inspector在iOS上進行測試之前測試您的應用程序。

如果您需要一些背景,Rune's Working With VoiceOver SupportGemmell's Accessibility for Apps可能值得一讀。

+0

我其實沒有使用輔助功能檢查器,但是我的遊戲目前正在被盲人用戶玩,所以這只是關於改變焦點。問題是點擊一個按鈕會顯示一個新的UI元素,但它實際上超出了您所點擊的範圍,而這實際上是一種輕鬆的滑動操作。 –

16

這一直是完全可以做到的。

只寫沿着線的東西:

- (void)viewDidAppear:(BOOL)animated 
{ 
[super viewDidAppear:animated]; 

    UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, 
           self.myFirstElement); 
} 
@end 

這適用於這兩個UIAccessibilityScreenChangedNotification和UIAccessibilityLayoutChangedNotification。 更多信息:http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIAccessibility_Protocol/Introduction/Introduction.html#//apple_ref/c/data/UIAccessibilityLayoutChangedNotification 這裏: http://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/Accessibility/AccessibilityfromtheViewControllersPerspective.html#//apple_ref/doc/uid/TP40007457-CH2-SW1

+1

我不認爲這是真的。至少,它首次被提及與iOS 6相關。 –

+0

適用於iOS 7.謝謝! –

0

This technique爲我工作。

VoiceOver將通知accessibleElements數組中的第一個元素的值。這可以分類以滿足您的需求。