在辅助功能模式下未检测到手势

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 焦点和触摸探索按设计工作?

【讨论】:

以上是关于在辅助功能模式下未检测到手势的主要内容,如果未能解决你的问题,请参考以下文章

由于辅助功能设置未检测到 iOS 手势

视图已绘制但未检测到手势识别器

如何在没有辅助功能权限的情况下检测输入法选择器的可见性

如何使用辅助功能模式使可跨文本可点击

手机截屏怎么截

Android辅助功能基本操作