2016-11-18 1 views
-1

私はカスタムをビューコントローラの戻るボタンとして使用しています。UIButtonこの戻るボタンはUINavigationBarではなく、単にコンテンツの上を浮動するビューとして扱われ、そのアクションはポップをトリガーします(ただし、View Controllerを破棄するデリゲートメソッドを簡単に呼び出すこともできます)。カスタム戻るボタンのアクセシビリティ

アップルのアクセシビリティエンジニアは、これが可能であることを私に教えてくれました。このバックボタンは、iOSのアクセシビリティ機能ではなく、適切なナビゲーションバックボタンとして扱われます。 (おそらく特定のアクセシビリティデバイスがこの情報を使用しているため)ユーザーにとっては非常に重要であると思われます。私は、VoiceOverでラベルが使用された方法で正しく実装していないことがわかります(「戻るボタン」と「戻るボタン」)。あなたが声を使うなら、あなたは自分自身の違いを聞くことができますaccessibilityLabelNSLocalizedString("Back", nil)に設定されている通常のUIButtonと比較して、標準UINavigationControllerのナビゲーションバーの「戻る」ボタンでeoverを実行します。

残念なことに、私は私の人生のためにこれを修正する方法を覚えていません(または少なくとも、メモを取っていません:/)。

アクセシビリティインスペクタは、ナビゲーションバーの戻るボタンをポイントしているとき(および繰り返しクラッシュしたとき)に特別なアクセシビリティプロパティを指定しませんでした。

だから私は何が欠けていますか?それはアクセシビリティ要素/コンテナの特徴ですか?ボタンの種類は?または、ナビゲーションバーにあるという事実に基づいて、UIKitの魔法ですか?

答えて

0

まず、機能的には、両者の間に機能に違いはありません。あなたの言葉は、それがどのように機能するか心配していることを示唆しています。ここで重要な部分は、それが正しくアナウンスされることです。アクセシビリティapiは、ボタンがどのように機能するか気にしないので、デリゲートメソッドを呼び出すかどうかに関わらず、View Controllerを閉じることはまったく重要ではありません。

したがって、要素がユーザーにどのように話されているかに注目しましょう。 iOSの要素がどのように話されているかを制御するものは次のとおりです。

アクセシビリティラベル:固有のテキスト値を持つボタンのテキストです。 EX:ボタンのタイトル、またはテキストフィールド内のテキスト。特にアクセシビリティラベルを上書きすると、このテキストも上書きされます。

アクセシビリティヒント:アクションを実行した結果を説明する追加のテキスト。必ずしも必要なわけではありませんが、場合によっては役立ちます。

アクセシビリティ特性:UI要素が再生できる事前定義されたロールのセット。これらは要素に適用するとさまざまな結果が得られます。 SOmeは、要素がアナウンスされる方法(ボタンやリンクなど)を変更し、要素によってサウンドが再生されるかどうかなどの特定の動作についてアクセシビリティAPIに警告するため、VoiceOverはそれに応じて反応します。今すぐ! 「戻る」ボタンの「適切な」マークアップとアナウンスの要素がどこから来たのかを解説しましょう。

AccessibilityLabel = "Back" 
OR 
Title/Text = "Back" and AccessibilityLabel = nil 
AccessibilityTraits = [Button] 
AccessibilityHint = "Goes back to the previous screen." 

**この場合、ヒントはオプションです。

VoiceOverを発表:

戻る(短い休止)#button(長い沈黙)は、前の の画面に戻ります。

ここで、#button =ボタンのローカライズされた単語。この場合、ちょうどボタン。しかし、ボタンの特性を利用することで、ボタンを持っていることをプログラムに伝えて、VoiceOverで通知方法を理解できるようにすることは重要です。ローカリゼーションに関しては、述語対第一言語など...これは非常に重要です。また、プログラムによる役割の決定はWCagの要件であり、ネイティブアプリでは正式には必要ではありませんが、依然としてベストプラクティスです。 VoiceOverがあなたのコントロールにどのように反応するかだけでなく、他の潜在的なATにも関心があることを覚えておいてください。それぞれの情報が正しい場所に保存されていることを確認することは非常に重要です。あなたはVoiceOVerをうまく振る舞わせることができるかもしれませんが、あなたのアプリはBrailleBoardにどのようにレンダリングされますか?

AccessibilityLabel: "Back, button" 
Traits: none 
Hint: none. 

これは非常に似て発表するだろうが、微妙に異なる(と明らかに私は、この場合にヒントを省略):

代替INCORRECTのマークアップは、アクセシビリティラベルにこの情報のすべてを置くことになります。アクセシビリティAPIに気づいた経験のある人、間違いなく点字掲示板のようにVoiceOverを使ってATを使う人がいます。

+0

ありがとうございました。私のテキストではっきりしていない場合は謝罪しますが、私の質問は、ボタンを指定するための特性/ラベルの使用についてではなく、正しく理解されています。質問は、ナビゲーションコントローラの汎用ボタンと汎用UIButtonの特定の状況に関するものです。なぜなら、Appleのエンジニアが私に言ったように、BrailleBoardやSwitchなどのアクセシビリティツールには機能的な違いがあったからです。 – Loz

+0

明確にするために最も安全なのは、コードサンプルまたは要点を含めることです。 – ChrisCM

+0

私はどんなコードが助けになるかわからないのですか?上で書いたように、汎用UIButton( 'let btn = UIButton(); btn.accessibilityLabel = NSLocalizedString(" Back "、nil)')は "Back。Button"というフレーズを話します。 (戻るとボタンの間には一時停止します)。 (UINavigationControllerにviewControllerを押すだけで作成された)ナビゲーションバーの戻るボタン(実際にはUIBarButtonItem)は、 "Back Button"(一時停止なし)と表示されます。どのような他のコードを提供するか分からない。 – Loz

関連する問題