2017-08-08 5 views
1

私たちのアプリケーションをよりアクセスしやすくするためにレビューしています。私はカスタムビューに問題があります。注:Xamarin/C#を使用していますが、同じAPIをフードの下で使用しているため、これはうまくいけば何も変わりません。カスタムビューでVoiceOverから「タップ」を処理する

このカスタムビューは、基本的に「スライドをロック解除する」ジェスチャに似ています。 VoiceOverを有効にすると、ユーザーは「スライドする」ことはできませんが、ダブルタップで表示/ボタンをアクティブにすることができます。

このビューは、UIVIewの子で構成されたUIViewのサブクラスであり、左から右にジェスチャをキャッチするUIPanGestureRecognizerです。

私は親クラスへのアクセシビリティ情報を追加することによって開始:VoiceOverのは、正しく代わりにサブビューをチェックする、1つのビューとしてのスライダーを見

IsAccessibilityElement = true; 
AccessibilityTraits = UIAccessibilityTrait.Button; 
AccessibilityLabel = "..."; 

。ただし、「VoiceOverダブルタップ」ジェスチャーを使用して起動することはできません。

UIViewの代わりにUIControlをサブクラス化し、sendAction()を上書きしようとしましたが、このメソッドは呼び出されません。

私はコントロールへのUIAccessibilityTraitAllowsDirectInteraction特性を設定したくありません。これは、アプリケーションのアクセスを妨げてしまうからです。

"ダブルタップ"をキャッチして、ユーザーがコントロールをスライドさせたときに実行する必要がある操作を実行するにはどうすればよいですか?

答えて

1

だから、これは結局Xamarinの問題でした。

VoiceOverがカスタムコントロールで動作することを確認するには、UIAccessibilityActionの非公式プロトコルに準拠する必要があります。私の場合、それはaccessibilityActivate()でした。

私はXamarinを使用しているので、をエクスポートする必要があります。メソッドは、ランタイムが非公式プロトコルからメソッドを実装していることを確認できます。

[Export("accessibilityActivate")] 
public bool AccessiblityActivate() { 
    Console.WriteLine("It works!"); 
    return true; 
} 
関連する問題