3

画面の上部にラベルを配置する必要があるアプリをプログラミングしています。ユーザーがラベルに触れる (またはその上で指をスワイプする) たびに、ラベルのテキストを読み上げる必要があります。私は次の方法を試しました:

まず、ラベルのアクセシビリティ要素を = にしYESます。

[labelInfo setIsAccessibilityElement:YES];

しかし、これはうまくいきません。次に、2 回のタッチ、1 回のタップなど、多くのジェスチャを定義してみました。1 本指と 2 本指などを使用してロングタップし、そのジェスチャー クラスで を書き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);
}

多くのものが事前定義されているため、アクセシビリティモードで不足しているものやジェスチャが機能しないものはありますか? たとえば。2 本指 2 タップは、音楽のオン/オフなどです。この場合、機能するには少なくともスワイプが必要です。これについて何か考えはありますか?

PS私はここで同様の質問の解決策を見てきました。しかし、それはジェスチャーのズームに特有のものであり、私には役に立ちません。また、すべてのジェスチャ クラスはアクセシビリティ モードがなくても完全に機能するため、正しく記述されています。

4

1 に答える 1

2

ジェスチャーはすべて VoiceOver によって傍受されます。画面を指でダブルタップして 1 秒間長押しするジェスチャー パススルー モードがあります。トーンが聞こえ、指を離すかジェスチャを完了するまでインターセプトは無効になります。これにより、基本的に 8 つのジェスチャが可能になります。つまり、4 つのスワイプと 4 つのドラッグです。

しかし、そうは言っても、アプリケーションがこのように動作する必要があるのはなぜでしょうか? アクセシビリティ ラベルやヒントを追加して、VoiceOver フォーカスとタッチ トゥ エクスプローラーを設計どおりに機能させないのはなぜですか?

于 2014-12-15T00:12:52.197 に答える