我有一个自定义滑块,它根据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