2015-06-24 48 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