我们只支持横向模式,出于某种原因,当我们推送到不同的视图控制器,旋转应用程序,然后弹出时,我们的UISearchBar将占用整个navigationBar并将标题推送到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.
所以我可以看到我需要的navigationBar,以及它下面的toolBar,但不知道如何到达它。
我也试过这个
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表明我有正确的项目。我是不是试图只是使用屏幕并点击它?谢谢!
答案 0 :(得分: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"])