3

我正在编写一个应用程序,我需要将标签放在屏幕顶部,并且每当用户触摸它(或在其上方滑动手指)时,我都需要大声读出标签文本。我尝试了以下方法:

首先使标签的可访问性元素 = 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);
}

是否有我遗漏的东西或在可访问性模式下没有手势工作,因为许多都是预定义的。例如。两指两按是音乐开/关等。如果是这种情况,我至少需要滑动才能工作。对此有什么想法吗?

PS我在这里看到了类似问题的解决方案。但是缩放手势很特别,对我没有帮助。此外,所有手势类都可以在没有可访问性模式的情况下完美运行,因此它们已正确编写。

4

1 回答 1

2

手势都被 VoiceOver 截取。有一种手势直通模式,您可以在屏幕上双击并按住手指 1 秒。然后,您将听到提示音,并且在您抬起手指或完成一个手势之前,拦截将被禁用。这基本上为您提供了 8 个手势,然后您可以完成 - 四次滑动和四次拖动。

但是话虽如此,为什么您的应用程序需要以这种方式运行?为什么您不能简单地添加辅助功能标签和/或提示,并允许 VoiceOver 焦点和触摸探索工作,因为它们的设计?

于 2014-12-15T00:12:52.197 回答