0

ランドスケープ モードのみをサポートしており、何らかの理由で別のビュー コントローラーにプッシュし、アプリを回転させてからポップすると、UISearchBar がナビゲーション バー全体を占有し、タイトルまで LHS にプッシュします。そのため、UISearchBar を UIToolbar にラップすることになり、問題が解決したようです。

したがって、スタックにプッシュされる 2 番目のビュー コントローラーでは、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

UIAElementではなくオブジェクトのUIAElementArrayを返す関数を使用してみてください

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 に答える