9

アプリでボイスオーバーのサポートを改善しようとしています。私は持っていUISearchBarます。showBookMarksプロパティを に設定しましたYES。そして、次のようにカスタム イメージを設定しました。

[searchbar setImage:icon forSearchBarIcon:UISearchBarIconBookmark state:UIControlStateNormal];

私が抱えている問題は、Voice Over がオンになっていると、ブックマーク アイコンを有効にする方法がないことです。テキストを入力すると、「クリア」アイコンが表示され、期待どおりに選択してアクティブ化できます。しかし、テキストが消去され、ブックマーク アイコンが表示されると、選択できなくなります。どこをタップしても、Voice Over の四角形は常にアイコンを含む検索バー全体を囲みます。

アイコンのaccessibilityLabelaccessibilityTraitsプロパティを設定してみました。のプロパティを にUIImage設定しました。何も機能していないようです。UIImageisAccessibilityElementYES

UISearchBarブックマーク アイコンをアクセス可能にするために必要な手順を知っている人はいますか?

検索バーの完全なコードは次のとおりです。

UISearchBar *bar = [[UISearchBar alloc] init];
[bar sizeToFit];
bar.autoresizingMask = UIViewAutoresizingFlexibleWidth;
bar.placeholder = @"Search listed items";
bar.autocapitalizationType = UITextAutocapitalizationTypeNone;
bar.autocorrectionType = UITextAutocorrectionTypeNo;
bar.keyboardType = UIKeyboardTypeDefault;
bar.showsBookmarkButton = YES;
bar.text = @"";

UIImage *icon = [UIImage imageNamed:@"bookmarks.png"];
icon.accessibilityLabel = @"Bookmarks";
icon.accessibilityTraits = UIAccessibilityTraitButton;
icon.isAccessibilityElement = YES;
[bar setImage:icon forSearchBarIcon:UISearchBarIconBookmark state:UIControlStateNormal];
[bar setPositionAdjustment:UIOffsetMake(-1, -1) forSearchBarIcon:UISearchBarIconBookmark];

追加情報:

UITableViewController検索バーはで接続された で使用されることに注意してくださいUISearchDisplayController。検索バーは、テーブル ビューの として設定されていますheaderView

そして、これはすべてコードで行われます。ストーリーボードや xib は関係ありません。

4

2 に答える 2

5

たくさんのデバッグの後、私は答えを見つけました。Voice Over が のブックマーク アイコンのカスタム アイコンを認識するためにはUISearchBar、アイコンが正確に正しいサイズである必要があります。

使用する画像は 40x29px (Retina バージョンでは 80x58px) でなければなりません。その他のサイズとアイコンは、Voice Over によって認識されません。

私の画像は 38x31px (および 68x62px) でした。

元の質問に投稿したコードはすべて正しいです。画像のサイズが更新されると、すべてが期待どおりに機能し始めました。setPositionAdjustment:forSearchBarIcon:コードの唯一の変更点は、不要になったへの呼び出しを削除したことです。

アイコン サイズのこのようなわずかな違いが、Voice Over がカスタム アイコンで動作する場合と動作しない場合の違いになる理由を想像できません。しかし、そこにあります。これが将来誰かに役立つことを願っています。

于 2013-03-22T22:33:45.177 に答える