我有一個自定義滑塊,它根據super.beginTrackingWithTouch
和super.continueTrackingWithTouch
更改值。它遵循一個二次方程。添加輔助功能自定義滑塊iOS
尋找使自定義滑塊可訪問。任何想法如何做到這一點?
我想添加一個標準的iOS滑塊,添加accessibilityLabel,並將這些值傳遞給自定義滑塊。儘管製作標準滑塊功能有困難,但對用戶不可見。
我有一個自定義滑塊,它根據super.beginTrackingWithTouch
和super.continueTrackingWithTouch
更改值。它遵循一個二次方程。添加輔助功能自定義滑塊iOS
尋找使自定義滑塊可訪問。任何想法如何做到這一點?
我想添加一個標準的iOS滑塊,添加accessibilityLabel,並將這些值傳遞給自定義滑塊。儘管製作標準滑塊功能有困難,但對用戶不可見。
擴展標準控件以執行所需的特殊行爲通常是最佳做法。作爲完全自定義控件的作者,您需要對其更多的可訪問性負責。
在設備上使用VoiceOver進行UISlider
實驗。看看它的行爲。在實施自己的控制時,您希望儘可能多地保持這種體驗。您可以使用Accessibility Inspector in Simulator來探索系統控件的輔助功能配置。
以下步驟幾乎肯定是相關的:
- (BOOL)isAccessibilityElement
返回YES
。- (CGRect)accessibilityFrame
以在屏幕座標中返回合適的矩形。- (UIAccessibilityTraits)accessibilityTraits
以包括UIAccessibilityTraitAdjustable
。- (NSString *)accessibilityValue
來描述您的控件的當前值。- (void)accessibilityIncrement
和- (void)accessibilityDecrement
來執行輔助客戶端(如VoiceOver)所請求的值更改。除了上面的步驟,我不能說沒有更多的細節你的具體控制需要什麼。如果您遇到問題,請查看Accessibility Programming Guide,UIAccessibility Protocol documentation和UIAction protocol documentation,並返回到StackOverflow並解答任何問題。
祝你好運,謝謝你給予的應有的關注。
如果訪問你的意思是語音,你可以做以下假裝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/
我必須回來提供一個更好的答案,但只是發佈公告時,值的變化是錯誤的方法。它不會像其他滑塊那樣工作,也不會改善其他輔助技術(如Switch Control)用戶的可訪問性,並且VoiceOver用戶可能無法理解。 – Justin