0

我们只支持横向模式,由于某种原因,当我们推送到不同的视图控制器,旋转应用程序,然后弹出时,我们的 UISearchBar 将占据整个导航栏,甚至将标题推送到 LHS。所以我们最终将 UISearchBar 包装在 UIToolbar 中,这似乎解决了这个问题。

因此,在第二个被推入堆栈的视图控制器上,我们在 UINavigationBar 的 UIToolbar 中有一个 UISearchbar。我似乎无法访问它。我想编写一个脚本来输入一些搜索项并单击这些项,这样当我们的数据模型发生变化时,我们就不会崩溃。

我遇到的问题是我不确定如何访问它。我假设

UIATarget.localTarget().frontMostApp().mainWindow()

可以在不仅仅是 rootViewController 的屏幕上使用。所以我试着做

UIATarget.localTarget().frontMostApp().mainWindow().navigationBar().toolBar().tap();

但这不起作用。我假设 navigationBar().buttons()[---] 也不会提供任何用途,因为它不是我要访问的按钮。当我做

window.logElementTree();

我懂了:

UIAWindow
-> UIANavigationBar
-> -> UIAButton
-> -> UIAToolbar  // (I'm trying to show the disclosure triangles in how it looks like in the log.

所以我可以看到我需要的导航栏,以及它下面的工具栏,但不知道如何到达它。

我也试过这个

var navBarElements = window.navigationBar().elements();

for (var elem in navBarElements) {
    if (elem["Toolbar"]) {
        UIALogger.logMessage("toolbar");            
    }
}

在我创建工具栏时的代码 viewDidLoad 中,我有这个:

UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 160, 44)];
toolbar.accessibilityIdentifier = @"Toolbar";

但是我从来没有得到表明我有正确的项目的 logMessage。我是否一直试图只使用屏幕并点击它?谢谢!

4

1 回答 1

0

尝试使用返回 UIAElementArray 对象而不是 UIAElement 的函数

UIATarget.localTarget().frontMostApp().mainWindow().navigationBar().toolBars()[<LabelOfToolBarOrIndexStartingFromZero>].tap();

甚至

UIATarget.localTarget().frontMostApp().mainWindow().navigationBars()[<NameOfNavigationBarOrIndexStartingFromZero>].toolBars()[<LabelOfToolBarOrIndexStartingFromZero>]].tap();

顺便说一句,尝试更换

if (elem["Toolbar"])

if (elem["object UIAToolbar"])
于 2012-07-10T18:08:06.813 回答