自定义后退按钮的辅助功能

时间:2016-11-18 12:52:38

标签: ios objective-c swift uibutton accessibility

我在视图控制器中使用自定义UIButton作为后退按钮。这个后退按钮不在UINavigationBar中,它被简单地视为浮动在内容顶部的视图,其动作触发弹出(但可以轻松地调用取消视图控制器的委托方法)。

我希望通过iOS中的辅助功能将此后退按钮视为正确的导航后退按钮,而不是标记为“后退”的常规按钮。

在WWDC '16,一位Apple辅助功能工程师告诉我,这对用户来说非常重要(可能是因为某些辅助功能设备使用此信息)。他可以通过VoiceOver中标签的说法来说明我没有正确实现它(“后退。按钮”和“后退按钮”......如果你在标准{{{{{{ 1}}的导航栏“后退”按钮与UINavigationController设置为accessibilityLabel的常规UIButton相比。

不幸的是,我不能为我的生活记住如何解决这个问题(或者至少,没有注意到:/)。

辅助功能检查器在指向导航栏后退按钮(并反复崩溃)时没有提供特殊的不同辅助功能属性。

所以...我错过了什么?它是一些可访问性元素/容器特征吗?还是按钮的类型?或者它是基于它在导航栏中的事实的一些UIKit魔术?

1 个答案:

答案 0 :(得分:0)

首先,从功能上讲,两者之间的功能没有区别。你说它的方式表明你担心它是如何运作的,你不应该这样。这里的重要部分是它正确宣布。可访问性apis并不关心你的按钮是如何工作的,所以无论你是否正在调用委托方法或解雇视图控制器都是无关紧要的。

因此,让我们关注如何向用户说出元素。控制iOS中元素使用方式的内容如下:

辅助功能标签:或文本,用于具有固有文本值的按钮。 EX:按钮的标题或文本字段中的文本。但值得注意的是,如果覆盖辅助功能标签,也会覆盖此文本!

辅助功能提示:用于描述执行操作后果的附加文本。并非总是需要,但在某些情况下有帮助。

辅助功能特征:UI元素可以播放的预定义角色集。当应用于元素时,它们具有不同的结果。 SOM改变元素的公布方式(如按钮和链接),有些人会警告Accessibility API关于某些行为,例如元素是否播放声音,因此VoiceOver可以做出相应的反应。现在好了!让我们分解“正确”标记为“后退”按钮,以及公告的元素来自何处。

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

**在这种情况下我会考虑提示可选。

VoiceOver公告:

  

返回(短暂停顿)#button(长暂停)返回上一个   屏幕。

其中#button =按钮的本地化字词。在这种情况下,只需按钮。但值得注意的是,通过使用按钮特性,您可以通过编程方式告诉应用程序您有一个按钮,并允许VoiceOver找出如何宣布它!在本地化,谓词与主语第一语言等方面......这非常重要。此外,编程确定角色是WCag的要求,虽然在本机应用程序上没有正式要求,但仍然是最佳实践。请记住,我们不仅关注VoiceOver如何响应您的控件,还关注其他潜在的AT。确保每条信息都存储在正确的位置非常重要。您可能能够将VoiceOVer变为正常行为,但您的应用将如何为BrailleBoard呈现?

替代的INCORRECT标记会将所有这些信息放在辅助功能标签中:

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

这会宣布非常相似,但略有不同(显然我省略了这种情况下的提示)。对于辅助功能API有经验的人肯定会注意到,并且肯定有人使用AT来形成VoiceOver ......例如盲文板。