- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我一直在研究我们的代码库,并在我们所有的按钮和文本字段上设置 accessibilityIdentifier 属性,以便我可以使用 UIAutomation 访问它们。在执行此操作时,我发现了一些已经存在的代码。
[_goodButton setAccessibilityLabel:@"off"];
我找不到关于这两种方法之间差异的任何文档。看起来他们做同样的事情。有人知道吗?我发现这个标签也设置为“关闭”很奇怪。
最佳答案
这两个属性肯定有些混淆。我自己也落入了同样的陷阱,但对 VoiceOver 和 UI 自动化测试的研究和实验表明存在明显差异。
accessibilityLabel
这是由 VoiceOver 读取给最终用户的值,或通过其他辅助工具公开的值。因此,这应该是一个本地化的字符串。如果可能的话,最好将其保持为一个单词,描述它是什么(即“帮助”、“播放”、“新笔记”等)。它也应该大写,但不要以句号结尾。这有助于 VoiceOver 的发音。
因为这是面向最终用户的,作为用户测试的一部分,开发人员可以根据需要将其更改为更清晰。例如,它可能会从“播放”变为“阅读评论”。因此,您不希望它与自动化测试相关联,因为这样的更改会破坏任何涉及现在不存在的“播放”标签的测试。这就是 accessibilityIdentifier
的用武之地。
accessibilityIdentifieraccessibilityLabel
面向最终用户,而 accessibilityIdentifier
则只面向开发人员,主要用于识别 UI 自动化和测试工具的可访问元素。因此,不应对其进行本地化。
开发人员应该使用仅对 UI 测试上下文有意义的值,而不是对最终用户有意义的值。例如,显示帮助主题的按钮可以有标识符“HelpButton”,因为它的标识很清楚,但最终用户不需要接触到它。
Make it a habit to use this value! Doing so ensures your UI automation tests will never break due to localization or from changes to
accessibilityLabel
.
accessibilityHint(包括完整性)accessibilityHint
适用于 accessibilityLabel
本身可能不够清晰的情况。由于 accessibilityLabel
应尽可能保持为单个单词,因此 accessibilityHint
可以提供额外的上下文。但是,如果 accessibilityLabel
本身具有足够的表现力,您应该将 accessibilityHint
留空。
如果确定需要 accessibilityHint
,请将其保留为一个简单的短句片段,大写并以句号结尾。它应该描述它做了什么,而不是告诉你该做什么(即“播放当前轨道”而不是“播放当前轨道”,因为后者听起来像是一个指令,告诉你该做什么,而不是让你知道什么会发生。)
这是如何使用的,VoiceOver 将首先读取标签,短暂暂停,然后读取提示(例如“播放...播放当前轨道”。如果用户禁用提示,它当然只会说“播放” ')
希望对您有所帮助!
关于ios - ios中的setAccessibilityLabel和accessibilityIdentifier有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21152716/
我是一名优秀的程序员,十分优秀!