2015-10-14 67 views
3

VoiceOver的輔助功能的標籤,我想確保我的工作對iOS應用的訪問,想實現的VoiceOver,以確保這一點。的觸摸ID

我找不到任何幫助的一個奇怪的事情是當顯示Touch ID視圖時(在我的情況下用於登錄應用程序)。 VoiceOver將ID標識爲單詞而不是I.D.

我已經嘗試實現NSString和LAContext對象的可訪問性屬性,但都沒有改變VoiceOver讀出的內容。以下代碼片段:

LAContext *context = [[LAContext alloc] init]; 
[context setIsAccessibilityElement:YES]; 
[context setAccessibilityLabel:@"TEST 2"]; 

NSError *error = nil; 

NSString *label = @"Please authenticate your ID using the Touch ID"; 
[label setIsAccessibilityElement:YES]; 
[label setAccessibilityTraits:UIAccessibilityTraitStaticText]; 
[label setAccessibilityLabel:@"TEST"]; 

showingTouchID = TRUE; 

if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) { 
    [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics 
      localizedReason:label 
         reply:^(BOOL success, NSError *error) { 
...... 

VoiceOver的輸出來自帶有或不帶有具有可訪問性屬性的上下文始終是標籤文本。

所有幫助非常感謝:)

+0

哪裏di dyou設置可訪問性標籤? –

回答

3

爲了使VoiceOver正確發音(即不要嘗試「破解」標籤發音),您絕對不能更改輔助功能標籤。原因是VoiceOver只有語音輸出;它也有盲文輸出,其中盲人用戶期望的那樣如果您確實如它們被寫入(即清楚地看到所有的空間,資本/小寫字母等)來讀取事情究竟信的信寫「ID」,而不是「ID」,然後在VoiceOver會或許會正確地發音它(在iOS中的特定版本),盲人用戶,還寫有「ID」盲文顯示器上後,可能會認爲,這是它實際上是如何寫並且出現讓我們說非專業的時候,他們會在與其他人的書面交流中使用這個錯誤的拼寫。

正確的方式來處理這個問題,雖然沒有給你一個直接的解決辦法,就是:

  1. 文件與蘋果有關在特定語言的特定聲音的特定詞的語音上的錯誤(例如「預期代名詞:[aj'di:]「與」實際代名詞:[id]「)
  2. 提出蘋果要求定製發音能力的錯誤(例如,如果您要保留可訪問性標籤完好無損,但是應該如何聲明文本的特定部分),以及翻譯人員可以根據每種語言單獨完成這種定製e字符串(因爲錯誤的發音是特定於語言的) - 也請參閱下一點。
  3. 如果可以改寫,嘗試不同的字不是一個問題(這似乎並不適用於「觸摸ID」,這是一組項的情況下)。但是,這是一個黑客過,因爲這隻能解決英文原版和不關心的翻譯,其中措詞可能相反可能更加複雜的發音。

對不起,壞消息。

最後,在這裏,無論是在iOS 8.4.1和iOS 9.0。2,帶有默認美國英語iOS語音的VoiceOver,至少在此網頁上,在「Touch ID」中聲明「ID」爲[ajdi:],而不是[id]。

+0

感謝鮑里斯。我同意你的觀點,這不應該被黑客攻擊,並且向蘋果公司提出了一個錯誤報告。 – GarryW

1

你可以四處嘗試一下本作快速的工作:只要給我和d之間的空間

NSString *label = @"Please authenticate your ID using the Touch ID"; 
    [email protected]"Please authenticate your I D using the Touch I D"; 

同時請注意,您只能設置無障礙UI元素和你不能將它設置爲一般變量。爲LAContext和NSString設置可訪問性標籤是沒有意義的。

您需要將可訪問性標籤設置爲UILabel或您給NSString的元素。

+0

謝謝Mr.T.這裏的問題似乎是LAContext處理向用戶呈現Touch ID提示,所以我唯一可以自定義的是_localizedReason_。這是一個NSString,不能是其他任何東西。這就是爲什麼我試圖爲其添加輔助功能標籤。正如@boris所說,它似乎是發音的一個缺陷,所以我會向蘋果公司提出一個錯誤報告。 – GarryW