iOS 获取 UINavigationBar 的后退按钮以设置辅助功能属性
Posted
技术标签:
【中文标题】iOS 获取 UINavigationBar 的后退按钮以设置辅助功能属性【英文标题】:iOS get UINavigationBar's back button in order to set accessibility properties 【发布时间】:2014-06-20 01:27:53 【问题描述】:我有一个导航控制器堆栈,其中一个视图具有动态标题。
视图控制器及其标题如下所示:
Main --> ItemsTableView --> ItemDetails
Title:Main Title: NN Items Title: Details
由于 ios UINavigationController 将“Back”按钮的文本设置为上一屏的标题,因此详情屏幕上的“Back”按钮会显示“ 我正在尝试做一些 iOS UI 自动化,但后退按钮的可访问性标签/ID 由系统设置为其按钮文本。这意味着详情屏幕上后退按钮的可访问性标签会动态变化,我在脚本中找不到! 如果我可以获得对 UIBarButtonItem 的引用,那么我可以轻松地将代码中的 我能够找到的所有内容都通过accessibilityLabel
或 accessibilityIdentifier
设置为固定字符串,但是我不知道该怎么做?self.navigationItem.backBarButtonItem
或类似方法将后退按钮设置为设置自定义按钮,但是当我阅读此属性时,它是nil
。我无法找到如何在不替换标准项目的情况下获得访问。如果可能的话,我宁愿不更换按钮
【问题讨论】:
self.navigationItem.leftBarButtonItem 会给你返回按钮吗? 如果我理解正确...你可以试试这个***.com/a/16786531/2365064 【参考方案1】:这也困扰着我。我一直在编写 Xcode 7 UI 测试,并试图想出一种通用的方法来点击后退按钮,而不必用自定义按钮替换它。
以下是我为 Xcode 7 UI 测试解决此问题的方法 - 但您也可以将其应用于 UI 自动化。
我发现(至少就 Xcode 7 UI 测试而言)系统创建的后退栏按钮项目由两个按钮组成,然后箭头也是一个可访问标签为“返回”的按钮。
因此,只要屏幕上没有任何其他标识为“返回”的按钮,就可以通过“返回”的可访问性标签访问返回按钮。在 UI 测试的情况下也是如此:
[[app.buttons matchingIdentifier:@"Back"] elementBoundByIndex:0]
在这里,我得到了第一个可以通过“返回”识别的按钮。我的情况可能只有两个这样的按钮 - 箭头,或整个后退按钮本身(在后退按钮的标题也是“后退”的情况下)。由于这两个按钮本质上是相同的,因此只需找到它找到的第一个按钮就足够了。
【讨论】:
以上是关于iOS 获取 UINavigationBar 的后退按钮以设置辅助功能属性的主要内容,如果未能解决你的问题,请参考以下文章
iOS 11 UINavigationBar 后退按钮图像颜色问题