2015-06-24 78 views
0

我有一個自定義滑塊,它根據super.beginTrackingWithTouchsuper.continueTrackingWithTouch更改值。它遵循一個二次方程。添加輔助功能自定義滑塊iOS

尋找使自定義滑塊可訪問。任何想法如何做到這一點?

我想添加一個標準的iOS滑塊,添加accessibilityLabel,並將這些值傳遞給自定義滑塊。儘管製作標準滑塊功能有困難,但對用戶不可見。

回答

1

擴展標準控件以執行所需的特殊行爲通常是最佳做法。作爲完全自定義控件的作者,您需要對其更多的可訪問性負責。

在設備上使用VoiceOver進行UISlider實驗。看看它的行爲。在實施自己的控制時,您希望儘可能多地保持這種體驗。您可以使用Accessibility Inspector in Simulator來探索系統控件的輔助功能配置。

以下步驟幾乎肯定是相關的:

  1. 覆蓋或設置- (BOOL)isAccessibilityElement返回YES
  2. 重寫或設置- (CGRect)accessibilityFrame以在屏幕座標中返回合適的矩形。
  3. 忽略或設置- (UIAccessibilityTraits)accessibilityTraits以包括UIAccessibilityTraitAdjustable
  4. 重寫- (NSString *)accessibilityValue來描述您的控件的當前值。
  5. 執行- (void)accessibilityIncrement- (void)accessibilityDecrement來執行輔助客戶端(如VoiceOver)所請求的值更改。

除了上面的步驟,我不能說沒有更多的細節你的具體控制需要什麼。如果您遇到問題,請查看Accessibility Programming GuideUIAccessibility Protocol documentationUIAction protocol documentation,並返回到StackOverflow並解答任何問題。

祝你好運,謝謝你給予的應有的關注。

-1

如果訪問你的意思是語音,你可以做以下假裝mySlider的名稱是您的滑塊控制:

[mySlider addTarget:self action:@selector(sliderValueChanged:) forControlEvents:UIControlEventValueChanged]; 

- (IBAction)sliderValueChanged:(UISlider *)sender { 
    NSString *valueToAnnounce=[NSString stringWithFormat:@"slider value = %f", sender.value]; 
    UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, valueToAnnounce); 
} 

此博客已多次幫助我旁白問題: http://www.podfeet.com/blog/tutorials-5/build-accessible-ios-apps/

+0

我必須回來提供一個更好的答案,但只是發佈公告時,值的變化是錯誤的方法。它不會像其他滑塊那樣工作,也不會改善其他輔助技術(如Switch Control)用戶的可訪問性,並且VoiceOver用戶可能無法理解。 – Justin