2016-11-18 29 views
-1

我正在使用定製UIButton作爲View Controller中的後退按鈕。這個後退按鈕並不在UINavigationBar中,它僅僅被視爲浮動在內容頂部的視圖,該視圖的動作會觸發流行(但可以輕鬆地調用關閉視圖控制器的委託方法。定製後退按鈕的輔助功能

我希望這個後退按鈕被iOS中的輔助功能視爲正確的導航後退按鈕,而不是標記爲「後退」的常規按鈕。

在WWDC '16,蘋果無障礙工程師告訴我,對用戶來說非常重要(大概是因爲某些輔助功能設備使用這個信息),他可以通過VoiceOver中的標籤說法(「後退按鈕」和「後退按鈕」)說出我沒有正確實施它。如果你使用voic,你可以自己聽到差異與標準的UINavigationController的導航欄「後退」按鈕相比,它的accessibilityLabel設置爲NSLocalizedString("Back", nil)的普通UIButton。

不幸的是,我不能爲我的生活記住如何解決這個問題(或者至少沒有做筆記:/)。

當指向導航欄後退按鈕(並重復崩潰)時,輔助功能檢查器沒有給出特殊的不同輔助功能屬性。

那麼...我錯過了什麼?它是一些無障礙元素/容器特質嗎?或者按鈕的類型?或者它是基於它在導航欄中的事實而導致的一些UIKit魔術?

回答

0

首先,在功能上,兩者在功能上沒有區別。你說的方式表明你擔心它的功能,你不應該這樣做。這裏的重要部分是它正確地宣佈。可訪問性apis並不關心你的按鈕是如何工作的,所以不管你是調用委託方法還是解散視圖控制器都是無關緊要的。

因此,我們來關注元素如何與用戶交談。控制iOS中某個元素的內容如下。

輔助功能標籤:或文本,用於具有固有文本值的按鈕。 EX:按鈕的標題或文本字段中的文本。不過,值得注意的是,如果您覆蓋輔助功能標籤,則此文本也將被覆蓋!

輔助功能提示:用於描述執行操作後果的其他文本。並不總是需要,但在某些情況下是有用的。

輔助功能特性:UI元素可以播放的預定義角色集。這些結果應用於元素時會有不同的結果。 SOme改變了一個元素被宣佈的方式(比如按鈕和鏈接),有些人會警告有關某些行爲的可訪問性API,例如元素是否播放聲音,因此VoiceOver可以做出相應的反應。現在就來!讓我們將「正確」標記分解爲「後退」按鈕,以及公告的元素來自哪裏。

AccessibilityLabel = "Back" 
OR 
Title/Text = "Back" and AccessibilityLabel = nil 
AccessibilityTraits = [Button] 
AccessibilityHint = "Goes back to the previous screen." 

**在這種情況下,我將考慮提示可選。

VoiceOver的公告:

返回(短暫的停頓)#鍵(長時間的沉默)變回以前的 屏幕。

其中#button =按鈕的本地化字。在這種情況下,只需按鈕。但值得注意的是,通過使用按鈕特徵,您可以通過編程方式告訴應用程序您有一個按鈕,並允許VoiceOver找出如何通知它!當談到本地化,謂語與主題第一語言等......這是非常重要的。此外,程序確定角色是WCag的一項要求,儘管在本地應用上沒有正式要求,但仍然是最佳做法。請記住,我們不僅關注VoiceOver如何響應您的控制,而且還關注其他潛在的AT。確保每一條信息都存儲在正確的位置非常重要。您可能會欺騙VoiceOVer正常運行,但您的應用如何呈現BrailleBoard?

另一種不正確的標記將將所有的可訪問性標籤信息:

AccessibilityLabel: "Back, button" 
Traits: none 
Hint: none. 

這將公佈非常相似,但略有不同(顯然我忽略在這種情況下的提示)。有人對無障礙API的使用經驗肯定會注意到,肯定有人使用AT來形成VoiceOver ......比如盲文板。

+0

謝謝。並且,如果我在我的文本中不清楚道歉,但是我的問題不是關於使用特徵/標籤來指定按鈕 - 我理解並且它已被正確實施。問題是關於導航控制器中的後退按鈕與通用UIButton的具體情況。他們在聲音方面的報告有所不同,我想知道爲什麼會這樣,並且(如蘋果工程師告訴我的),某些輔助功能工具(如BrailleBoard或Switch)具有功能差異。 – Loz

+0

爲了清晰起見,最安全的事情是包含代碼示例或要點。 – ChrisCM

+0

恐怕我看不出什麼代碼會有幫助?正如我上面寫的,一個通用的UIButton('let btn = UIButton(); btn.accessibilityLabel = NSLocalizedString(「Back」,nil)')會說出「Back。Button」這個短語。 (注意在Back和Button之間暫停)。導航欄中的後退按鈕(實際上是UIBarButtonItem)(僅通過將viewController推到UINavigationController上創建)將會顯示「後退按鈕」(無間斷)。不確定要提供什麼其他代碼。 – Loz