2012-10-30 28 views
5

enter image description here無障礙的iOS,VoiceOver會讀出順序問題

是否有可能改變其在iPad上的VoiceOver功能,可訪問讀出的元素,當「兩指快速向下滑動」手勢完成的順序?

對於附加的圖像,其中包含3級的標籤和一個按鈕,將VoiceOver讀取以下列方式中的元素,

標籤1 - >標籤2 - >按鈕 - >標籤3

制罐爲了改變爲,

標籤1 - >標籤2 - >標籤3 - >按鈕

回答

13

實現這個爲你的榜樣的最快方法是將三個標籤放置在一個透明的UIView子類來作爲y的容器我們的標籤。這個子類必須正確設置才能讓VoiceOver知道如何解釋它。如果您的部署目標是iOS6,那麼您可以簡單回答此子類中的「應該組可訪問性子項」問題。

-(BOOL)shouldGroupAccessibilityChildren{ 
    return YES; 
} 

對於低於iOS6會比較複雜,除了你的UIView容器子類將只包含UILabels它們是可訪問的元素。您可以實現這樣的:

-(BOOL)isAccessibilityElement{ 
    return NO; 
} 
-(NSInteger)accessibilityElementCount{ 
    return self.subviews.count; 
} 
-(id)accessibilityElementAtIndex:(NSInteger)index{ 
    return [self.subviews objectAtIndex:index]; 
} 
-(NSInteger)indexOfAccessibilityElement:(id)element{ 
    return [self.subviews indexOfObject:element]; 
} 

我已經測試此示例代碼和它你在找什麼,如果你需要任何澄清,請添加註釋。總是樂於幫助使事情更容易獲得。

+0

謝謝你的回答。但是,'shouldGroupAccessibilityChildren'似乎沒有被調用。 – Breakpoint

+1

@Vittal'shouldGroup..'只會被iOS6設備調用,而不是所有使用> = 6 SDK構建的應用程序。同時確認包含標籤的視圖是使用身份檢查器在xib或故事板中的自定義類。讓我知道你是否仍然有麻煩。 – NJones

+0

啊,自定義類的一部分就是我所缺少的。愚蠢的錯誤。它現在有效。非常感謝。 是的,我在iOS6上測試。需要讓我的手在6以下的版本測試其餘的。所以只需將以下iOS 6的代碼添加到自定義類中就行了嗎? – Breakpoint

0

我認爲你可以在故事板中做到這一點。 VoiceOver訂單由文檔大綱中視圖的順序決定。

只需以正確的順序拖放視圖層次結構中的視圖即可。

+0

我有他們在正確的順序,但仍然VoiceOver不正確讀取它們。儘管我使用的是iOS 9,但我不知道事情是否改變。 – user1366265

+1

不,它們通常在屏幕上基本上是從左到右讀取的 –

4

我嘗試將shouldGroupAccessibilityChildren設置爲YES,但它對我無效。

爲我工作的是直接設置父視圖的輔助功能標籤(因爲我希望一次讀取所有項目/一個VoiceOver手勢)。

[cell setAccessibilityLabel:[NSString stringWithFormat:@"%@, %@", cityLabel, temperatureLabel]]; 

碼的上述片段是由Apple的文檔Enhancing the Accessibility of Table View Cells

0

在夫特,附接一個IBOutlet到母體的UIView,然後shouldGroupAccessibilityChildren設置爲true就足夠了。

abc.shouldGroupAccessibilityChildren =真

我沒注意,如果還設置isAccessibilityElement = true分組將不會生效。同樣,檢查故事板或xib中的可訪問性複選框也會阻止分組發生。