2012-01-12 131 views
15

我們使用KIF進行功能測試,並使用元素的輔助功能標籤來確定發送事件的位置。我目前正在嘗試測試UISegmentedControl的行爲,但爲了這樣做,我需要爲控件的不同部分設置不同的可訪問性標籤。我如何設置特定細分的訪問標籤?如何爲UISegmentedControl的特定段設置訪問標籤?

回答

10

我剛剛開始使用KIF自己,所以我沒有測試過,但可能值得一試。我相信我很快就會遇到同樣的問題,所以我很想聽聽它是否有效。

首先,UIAccessibility Protocol Reference有accessibilityLabel下一張紙條,上面寫着:

「如果你提供的UIImage對象在一個UISegmentedControl顯示,你可以在每個圖像上設置該屬性,以確保段正常訪問。 「

所以,我想知道是否可以在每個NSString對象上設置accessibilityLabel,並且可以使用它訪問每個帶有KIF的段。作爲開始,您可以嘗試創建幾個字符串,設置其可訪問標籤,並使用[[UISegmentedControl alloc] initWithItems:myStringArray];填充它。

請更新我們的進度。我想聽聽這是怎麼回事

+0

不,這是行不通的。您必須使用已接受的答案來以編程方式自定義這些答案,而且這很醜陋。 – Josh 2012-10-20 17:09:03

+1

這適用於我,至少從iOS 5.1開始。我還沒有進一步測試。如果我設置圖像的accessibilityLabel,然後在UISegmentedControl中使用圖像,它可以按預期工作。 – rmaddy 2013-03-11 04:06:28

+1

在'NSString'對象上設置accessibilityLabel ... mind = blown – 2015-01-11 19:10:08

8

UISegmentedControl的每個部分是UISegment類實例,從UIImageView的子類。您可以通過subviews屬性UISegmentedControl訪問這些實例,並嘗試以編程方式爲它們添加輔助功能。

+0

我試過了,它不適合我。我嘗試了另一種方式,現在它適用於我。 [[segmentedControl imageForSegmentAtIndex:0] setAccessibilityLabel:@「Weapons」]; – UnchartedWorks 2014-04-08 08:59:43

14

正如頂點表示,

OBJ-C

[[[self.segmentOutlet subviews] objectAtIndex:3] setAccessibilityLabel:@"GENERAL_SEGMENT"]; 

迅速

self.segmentOutlet.subviews[3].accessibilityLabel = "GENERAL_SEGMENT" 

一些建議,這樣你就不會發瘋,像我一樣:

  1. 要在輔助功能模式中滾動滑動三個手指
  2. 段的索引向後比您預期的要向後,即最右邊的段是第0個索引,而最靠左的是第n個索引,其中n是元素在UISegmentControl
+1

這在Swift中可能如何? – SwingerDinger 2015-04-28 12:33:17

+1

我添加了一個快速示例。我沒有嘗試過,但編譯器接受了這個語法。對不起,遲交回復@SwingerDinger – anders 2015-10-27 14:08:39

+0

非常感謝老兄! – satheeshwaran 2016-12-15 11:39:43

8

這是一個老問題,但爲了以防萬一別人遭遇了這一點,我發現,段自動擁有指定作爲其文本的可訪問性標籤的數量。因此,如果加入兩種選擇選項1和選項2的呼叫的到

[tester tapViewWithAccessibilityLabel:@"Option 2"]; 

成功選擇的段。

+1

它不工作,我檢查了無障礙檢查員,並沒有他們的標籤 – Caipivara 2015-01-05 22:16:38

+0

OMG這應該是接受的答案,這麼簡單!適用於iOS 8的我。 – 2015-04-11 21:53:08

+0

工程,儘管我有一個問題:我的其中一個選項卡與段具有完全相同的文本。因此,它們都具有相同的輔助功能標籤。 – user3099609 2016-03-01 12:10:02

1

另一種選擇,如果不願意設置無障礙環境頭銜可能要計算每個段部件的poistion和使用

[tester tapScreenAtPoint:segementPosition]; 

觸發動作

4

這是一個老問題,但爲了以防萬一任何人都遇到這種情況,我發現這些細分市場自動將可訪問性標籤指定爲他們的文本。

而且斯圖爾特的回答,我發現它編寫測試用例時真正有用的點亮在模擬器「輔助檢查」(設置 - >通用 - >輔助功能 - >輔助檢查)。您會驚訝有多少元素已包含輔助功能標籤,如標準的iOS界面元素甚至第三方框架。

Facebook log in button with accessibility label

注意:手勢現在會有所不同 - 點擊可查看輔助功能信息,雙擊選擇。最小化「輔助功能檢查器」窗口(通過點擊X按鈕)將使手勢恢復正常。

+0

好的建議! – anders 2015-04-28 14:18:04

相關問題