機能テストには KIF を使用し、要素のアクセシビリティ ラベルを使用して、イベントの送信先を決定します。現在、UISegmentedControl の動作をテストしようとしていますが、そのためには、コントロールのさまざまなセグメントにさまざまなアクセシビリティ ラベルを設定する必要があります。特定のセグメントにアクセシビリティ ラベルを設定するにはどうすればよいですか?
13 に答える
バーテックスの言う通り
obj-c
[[[self.segmentOutlet subviews] objectAtIndex:3] setAccessibilityLabel:@"GENERAL_SEGMENT"];
迅速
self.segmentOutlet.subviews[3].accessibilityLabel = "GENERAL_SEGMENT"
私のように夢中にならないように、いくつかのアドバイス:
- ユーザー補助モードでスクロールするには、3 本の指でスワイプします
- セグメントのインデックスは、予想よりも逆になっています。つまり、最も右にあるセグメントは 0 番目のインデックスであり、最も左にあるセグメントは n 番目のインデックスです。ここで、n は UISegmentControl 内の要素の数です。
私は自分でKIFを使い始めたばかりなので、これをテストしていませんが、試してみる価値があるかもしれません。近いうちに同じ問題が発生すると確信しているので、うまくいくかどうか聞いてみたいと思います。
まず、UIAccessibility Protocol Referenceには、accessibilityLabelの下に次のようなメモがあります。
「UISegmentedControlに表示するUIImageオブジェクトを指定する場合は、各画像にこのプロパティを設定して、セグメントに適切にアクセスできるようにすることができます。」
したがって、各NSStringオブジェクトにもaccessibilityLabelを設定し、それを使用してKIFで各セグメントにアクセスできるかどうか疑問に思っています。まず、いくつかの文字列を作成し、それらのアクセシビリティラベルを設定して、[[UISegmentedControl alloc] initWithItems:myStringArray];を使用してみてください。それを投入します。
進捗状況を更新してください。これがどうなるか聞きたい
の各セグメントは、UISegmentedControl
からUISegment
サブクラス化されたクラス インスタンスUIImageView
です。subviews
のプロパティでこれらのインスタンスUISegmentedControl
にアクセスし、プログラムでアクセシビリティを追加しようとすることができます。
これは古い質問ですが、他の誰かがこれに遭遇した場合に備えて、セグメントにはテキストとして指定されたアクセシビリティ ラベルが自動的にあることがわかりました。したがって、オプション 1 とオプション 2 の 2 つのオプションが追加された場合。
[tester tapViewWithAccessibilityLabel:@"Option 2"];
セグメントの選択に成功しました。
これは古い質問ですが、他の誰かがこれに遭遇した場合に備えて、セグメントにはテキストとして指定されたアクセシビリティ ラベルが自動的にあることがわかりました。
Stuart の回答に加えて、シミュレーターで「アクセシビリティ インスペクター」をオンにするテスト ケースを作成するときに非常に役立つことがわかりました ([設定] -> [一般] -> [アクセシビリティ] -> [アクセシビリティ インスペクター])。標準の iOS UI 要素やサードパーティのフレームワークなど、アクセシビリティ ラベルが既に含まれている要素の数に驚かれることでしょう。
注: ジェスチャーが変更されます - タップしてアクセシビリティ情報を表示し、ダブルタップして選択します。Accessibility Inspector ウィンドウを (X ボタンをタップして) 最小化すると、ジェスチャが通常の状態に戻ります。
アクセシビリティラベルを設定したくない場合の別のオプションは、各セグメントパーツの位置を計算して使用することです
[tester tapScreenAtPoint:segementPosition];
アクションをトリガーする