2016-02-04 66 views
1

刚才我遇到了一个奇怪的情况。我在我们的应用程序中有一个容器视图,当点击时需要读出所有的视图,但只有一个视图应该可以单独访问。由于某些视图是带有自己子视图的复杂视图,因此我设置ADA逻辑以读取视图的accessibilityLabel(如果有),如果不是,则从子视图构建视图。设置按钮的UIAccessibilityTrait是否从它的accessibilityLabel中删除单词“按钮”?

那么,今天我们不得不在添加单词“按钮”时帮助按钮,因为容器视图被点击阅读。所以我只是在标签的accessibilityLabel中添加了“button”这个词,并且一切正常。然后我意识到,这可能会改变它读取单独点击“更多信息按钮按钮”,因为我已将按钮的accessibilityTraits属性设置为UIAccessibilityTraitButton

但是,令我惊讶的是,它正确地将其读为“更多信息按钮”。苹果是否会在accessibilityLabel中检测到无关的“按钮”,并在特征设置为按钮时将其删除?当特质设置为标签时,他们是否也会从按钮中删除多余的“标签”?如果这是它的工作方式,我发现这非常酷,并且对苹果工程师的部件有着不可思议的深思。

编辑:如果这是完成的方式,有人可以指出我在哪里记录这个?我无法找到它,虽然我目前仍在研究这个修补程序,所以我没有做深度搜索,我可以做的最多。

回答

1

我已经有一段时间来做一些适当的测试。如果您正确设置特征,VoiceOver将删除额外的标签。这允许您在容器视图中读取类型,并仍设置accessibilityTraits

因此,例如,如果您将accessibilityTraits设置为UIAccessibilityTraitButton,并且accessibilityLabel中的最后一个单词是按钮,它将删除最后一个单词并且只读取一次按钮。但是,如果您将accessibilityTraits设置为“UIAccessibilityTraitImage”,它将不会删除该按钮,并会用“按钮图像”结束其阅读。然而,将最后一个单词改为“图像”,它只能读取一次图像。

对于苹果公司而言,这个实现方案还算不错。