gpt4 book ai didi

iOS 获取 UINavigationBar 的后退按钮以设置辅助功能属性

转载 作者:行者123 更新时间:2023-12-02 07:09:16 25 4
gpt4 key购买 nike

我有一个导航 Controller 堆栈,其中一个 View 具有动态标题。

View Controller 及其标题如下所示:

Main       -->  ItemsTableView  -->  ItemDetails
Title:Main Title: NN Items Title: Details

由于 iOS UINavigationController 将“后退”按钮的文本设置为上一屏幕的标题,因此详细信息屏幕上的“后退”按钮显示“< NN Items”,其中 NN 是动态变化的数字。

我正在尝试执行一些 iOS UI 自动化,但后退按钮的辅助功能标签/ID 由系统设置为其按钮文本。这意味着详细信息屏幕上后退按钮的辅助功能标签将动态更改,而我无法从我的脚本中找到它!

如果我可以获得对 UIBarButtonItem 的引用,那么我可以轻松地将代码中的 accessibilityLabelaccessibilityIdentifier 设置为固定字符串,但是我无法弄清楚如何做到这一点?

我能够找到的所有内容都通过 self.navigationItem.backBarButtonItem 或类似方式将后退按钮设置为自定义按钮,但是当我阅读时该属性为nil。我无法找到如何在不替换标准项目的情况下访问它。如果可能的话,我不想更换按钮

最佳答案

这也困扰着我。我一直在编写 Xcode 7 UI 测试,并试图想出一种点击后退按钮的通用方法,而不必将其替换为自定义按钮。

以下是我如何在 Xcode 7 UI 测试中解决此问题 - 但您也可以将其应用于 UI 自动化。

我发现(至少就 Xcode 7 UI 测试而言)系统创建的后栏按钮项目由两个按钮组成,整个项目是一个带有可访问性标签的按钮,无论按钮的标题是什么,然后箭头也是一个带有“后退”辅助功能标签的按钮。

因此,只要屏幕上没有任何其他按钮被标识为“后退”,就可以通过“后退”辅助功能标签来访问后退按钮。就像 UI 测试的情况一样:

[[app.buttons matchingIdentifier:@"Back"] elementBoundByIndex:0]

这里我得到了第一个可以通过“后退”识别的按钮。在我的情况下,只能有两个这样的按钮 - 箭头或整个后退按钮本身(在后退按钮的标题也是“后退”的情况下)。由于这两个按钮本质上是相同的,因此只需获取找到的第一个按钮就足够了。

关于iOS 获取 UINavigationBar 的后退按钮以设置辅助功能属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24318660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com