Apple のナレーションは、UINavigation コントローラー内にある私のビューの 1 つのタイトルを誤って発音します。
アプリの他の部分では、カスタムのアクセシビリティ ラベルを追加して、会社名を正しく発音できるようにしました。UINavigationBar のアクセシビリティ ラベルを設定するにはどうすればよいですか?
Apple のナレーションは、UINavigation コントローラー内にある私のビューの 1 つのタイトルを誤って発音します。
アプリの他の部分では、カスタムのアクセシビリティ ラベルを追加して、会社名を正しく発音できるようにしました。UINavigationBar のアクセシビリティ ラベルを設定するにはどうすればよいですか?
これは iOS 8.2 で動作します。でviewDidLoad
:
self.navigationItem.accessibilityLabel = @"My accessible label";
ナビゲーション コントローラーがビュー コントローラーに遷移すると、ビュー コントローラーのaccessibilityLabel
代わりに が読み込まれますtitle
。
アクセシビリティ ラベルを追加できませんでしたが、回避策を見つけました。
navigationItem のタイトル View を、アクセシビリティが設定された UILabel に置き換えます。
UILabel *titleLabel = [[UILabel alloc] init];
titleLabel.text = @"myTitle";
[titleLabel setAccessibilityLabel:@"myCustomAccessiblityLabel"];
[titleLabel setFont:[UIFont boldSystemFontOfSize:20.0]];
[titleLabel setBackgroundColor:[UIColor clearColor]];
[titleLabel setTextColor:[UIColor whiteColor]];
[titleLabel sizeToFit];
self.navigationItem.titleView = titleLabel;
アクセシビリティ ラベルの設定が機能しない理由はわかりませんが、上記のコードは私のニーズには合っています。
iOS 11 および 12 でテストした同様の回避策があり、期待どおりに動作します。navigationItem.titleView
オブジェクトを設定してUILabel
から、 のアクセシビリティ識別子を設定しますnavigationItem.titleView
。
self.navigationItem.titleView = YOUR_CUSTOM_UILABEL;
アクセシビリティ識別子部分
self.navigationItem.titleView.accessibilityIdentifier = YOUR_ACCESSIBILITY_IDENTIFIER;
Xcode のAccessibility Inspectorを使用して識別子を確認できます。
からUINavigationBar
継承しているため、そのプロパティUIView
を設定できるはずです。accessibilityLabel
試してください: yourUINavigationBar.accessibilityLabel = @"title";
.
また、アクセシビリティ要素としてマークされていることを確認する必要がある場合がありますyourUINavigationBar.isAccessibilityElement = YES;
(また、アクセシビリティ要素としてマークされている別のビュー内にない)。(アクセシビリティ ラベルについては既にご存じのように思われるので、この最後の部分が問題である可能性があると推測しています。シミュレーターでアクセシビリティ インスペクターを使用して、要素の周りのボックスを見て、これが当てはまるかどうかを確認できます。それをタップして、ナビゲーター バーよりも大きなものの周りにあるかどうかを確認します。)