在辅助功能模式下未检测到手势
Posted
技术标签:
【中文标题】在辅助功能模式下未检测到手势【英文标题】:Gestures not getting detected in accessibility mode 【发布时间】:2012-09-12 20:14:26 【问题描述】:我正在编写一个应用程序,我需要在屏幕顶部放置一个标签,并且每当用户触摸它(或在其上方滑动手指)时,我都需要大声读出标签文本。我尝试了以下方法:
首先使标签的可访问性元素 = YES
。
[labelInfo setIsAccessibilityElement:YES];
但这不起作用。
然后我尝试定义许多手势,例如两次触摸、单击;用一根和两根手指长按等,在那个手势类中我写UIAccessibilityPostNotification
,这样就可以大声读出文本。但它似乎根本不起作用。我就是这样做的:
UITapGestureRecognizer *TapOnLabel = [[UITapGestureRecognizer alloc] initWithTarget:labelInfo action:@selector(TapOnLabel:)];
[TapOnLabel setIsAccessibilityElement:YES];
[TapOnLabel setNumberOfTapsRequired:2];
[TapOnLabel setNumberOfTouchesRequired:1];
[labelInfo addGestureRecognizer:TapOnLabel];
[TapOnLabel release];
-(void) TapOnLabel:(UITapGestureRecognizer *)gestureRecognizer
UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, @"Where am I?");
NSLog(@"%@",labelInfo.text);
是否有我遗漏的东西或在辅助功能模式下没有手势工作,因为很多都是预定义的。例如。两指两按是音乐开/关等。 如果是这种情况,我至少需要滑动才能工作。对此有什么想法吗?
附:我已经看到了类似问题here 的解决方案。但是缩放手势很特别,对我没有帮助。此外,所有手势类都可以在没有辅助功能模式的情况下完美运行,因此它们已正确编写。
【问题讨论】:
您不需要为此执行任何手势。标签是普通的 UILabel 吗?如果不是,它的accessibilityLabel
是什么?在启用了可访问性检查器的模拟器中(可以在设置中找到),检查器为该标签提供什么标签、提示、火车?
只是为了咯咯笑......你的问题将如何实际使用?如果用户无法阅读屏幕(各种原因),那么他们如何知道要滑动的区域(部分单词,可能是不同的语言)?这个问题的用例是什么?
@pithhelmet 我猜你没有考虑过视力受损的人?他们会在这里大声说出标签,以便他们知道他们正在触摸正确的应用程序。
【参考方案1】:
手势都被 VoiceOver 截取。有一种手势直通模式,您可以在屏幕上双击并按住手指 1 秒。然后,您将听到提示音,并且在您抬起手指或完成一个手势之前,拦截将被禁用。这基本上为您提供了 8 个手势,然后您可以完成 - 四次滑动和四次拖动。
话虽如此,为什么您的应用程序需要以这种方式运行?为什么您不能简单地添加辅助功能标签和/或提示,并允许 VoiceOver 焦点和触摸探索按设计工作?
【讨论】:
以上是关于在辅助功能模式下未检测到手势的主要内容,如果未能解决你的问题,请参考以下文章