我正在编写一个应用程序,我需要在屏幕顶部放置一个标签,每当用户触摸它(或在其上方滑动手指)时,我需要大声读出标签文本。我尝试了以下方法:
首先制作标签= 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);
}
我是否缺少某些内容或在辅助功能模式下没有手势,因为许多是预定义的。对于前者两个手指两个水龙头是音乐开/关等。 如果是这种情况,我需要至少滑动才能工作。有什么想法吗?
P.S。我已经看到了类似问题的解决方案here。但它特别适合缩放手势而对我没有帮助。此外,所有手势类都可以在没有辅助功能模式的情况下完美运行,因此它们已经正确编写。
答案 0 :(得分:2)
手势都被VoiceOver拦截。有一种手势直通模式,您可以在屏幕上双击并按住手指1秒钟。然后,您将听到音调,截取将被禁用,直到您抬起手指或完成手势。这为您提供了基本上可以完成的8个手势 - 四个滑动和四个拖动。
但话说回来,为什么你的应用程序需要以这种方式运行?为什么你不能简单地添加辅助功能标签和/或提示,并允许VoiceOver焦点和触摸探索工作的设计?