私は自分のiPhoneゲームにアクセシビリティを追加し、UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification、@ "string")を大量に使用して、それは99%の時間でうまく動作しますが、私は1つの問題を抱えています。VoiceoverはUIAccessibilityPostNotificationを使用して大きな休止を持っています
ボイスオーバーアナウンスはすべて、アプリケーションデリゲートに追加した1つの方法から実行されます。
- (void)voiceoverAction:(NSString *)speakString delay:(NSTimeInterval) delay { if (![[[[UIDevice currentDevice] systemVersion] substringToIndex:1] isEqualToString:@"3"]) { if (UIAccessibilityIsVoiceOverRunning()) { UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, speakString); if (delay > 0) { [NSThread sleepForTimeInterval:delay]; } } } }
遅延があるため、次のイベントがゲームで発生する前にアナウンスが話されます。アニメーションやその他のイベントが終了する前に発表全体が確実に行われるようにするには、より良い方法を見つけることができませんでした。
このメソッドを呼び出すとすぐにアナウンスが1つだけ発音されます。ある場合には、発言が行われる前に約10秒の休止がある。この場合、コードをデバッグしてブレークポイントを設定し、UIAccessibilityPostNotification行を手動で実行しても行は実行されますが、何も起こりません。 10秒後、デバッガで何もせずに、iPhoneはただアナウンスを話し始める。
この1つの発表で特別なのは、UIScrollViewのtouchesEnded:イベントから呼び出されるということだけです。他のアナウンスはゲーム全体のループの一部であり、タッチイベントに基づいていません。
ボイスオーバーがアクセシビリティ通知をキューに入れてすぐに話すことができない原因は何ですか?事前に
おかげで、 スティーブ
回答を受け入れることはできますか? – Brenden