我可以在界面生成器中设置可访问性标识符吗? Xcode4.2

Posted

技术标签:

【中文标题】我可以在界面生成器中设置可访问性标识符吗? Xcode4.2【英文标题】:can I set accessibility identifier in interface builder? Xcode4.2 【发布时间】:2011-10-26 09:52:46 【问题描述】:

我只能在界面生成器中设置辅助功能标签,但在 UI 自动化中,我需要辅助功能标识符来获取 UI 元素。 有什么办法吗?

【问题讨论】:

【参考方案1】:

可使用身份检查器选项卡的“用户定义的运行时属性”在 IB 中设置accessibilityIndentifier:

关键路径:accessibilityIdentifier

类型:字符串

值:选择的可访问性标识符文本

例如将滚动视图设置为具有可访问性 ID 'ScrollView':

注意:这只能用于具有 accessIdentifier 属性的项目,这意味着它们从 UIView 继承。此外,“关键路径”中的拼写错误可能会在加载项目时导致异常,我不相信会给出编译警告/错误。

【讨论】:

这是最好的答案,这样可访问性标签,这是一个面向用户的结构,不会被程序细节污染。 我同意,这是最好的答案! 为什么不能用于 UIViewController?【参考方案2】:

在 Xcode 7.1 (ios 9.0) 中,您可以尽可能简单地做到这一点。请找到所附图片。

您可以简单地以 view.accessibilityIdentifier 的形式访问它

【讨论】:

对我不起作用,我必须改用约瑟夫的答案***.com/a/13870658/1392046 - Xcode7.2.1/iOS8 其实我用9.0.1测试过 同意:尽管表面上看,但在将 accessibilityIdentifier 与 UI 测试一起使用时,这不起作用,而 @Joseph 使用用户定义属性的答案可以。【参考方案3】:

根据这个页面

http://developer.apple.com/library/ios/#documentation/AnalysisTools/Conceptual/WhatsNewInstruments/NewFeatures42/NewFeatures42.html

如果未设置accessibilityIdentifier,UIAutomation 将使用accessibilityLabel,因此您现在可以使用它。这可能不是最佳实践,因为如果用户使用 VoiceOver,accessibilityLabel 对用户是可见的(或者更确切地说是可听),但只要您给标签名称提供对人类有意义的名称就可以了.

希望 Apple 将来会在 IB 中添加一种设置 accessIdentifier 的方法,但现在您必须在代码中设置它,或者使用其他东西(例如 view 标签)来定位视图以实现自动化。

【讨论】:

【参考方案4】:

accessibilityIdentifier 仅适用于 IOS 5.0 或更高版本....请参考....

https://developer.apple.com/library/ios/documentation/uikit/reference/UIAccessibilityIdentification_Protocol/Introduction/Introduction.html

【讨论】:

【参考方案5】:

我想知道,你想测试 xib 中没有 IBOutlet 的东西吗?有更多经验的人可以分享一下他/她的想法吗?

这是我对这个主题的看法。 如果您不将 IBOutlet 分配给按钮/标签/texBox 或者这意味着您不会从代码中更改它。该控件将是静态的,您可以在界面生成器中看到它。 如果将 IBOutlet 添加到控件,则可以从代码中添加 acessibilityIdentifier。

【讨论】:

我需要做 UIAutomation,这需要无障碍 id。

以上是关于我可以在界面生成器中设置可访问性标识符吗? Xcode4.2的主要内容,如果未能解决你的问题,请参考以下文章

通过单元格中的可访问性标识符访问 UIButton

在界面生成器中,可访问性菜单有啥用?

java 在友好URL中设置可选参数

如何在 seaborn 的 facetgrid 中设置可读的 xticks?

在 Android 应用程序的文件中设置可执行权限

在 XCode5 中设置约束