Я пытаюсь улучшить поддержку Voice Over в приложении. У меня есть UISearchBar
. Я установил для свойства showBookMarks
значение YES
. И я установил собственное изображение с помощью:
[searchbar setImage:icon forSearchBarIcon:UISearchBarIconBookmark state:UIControlStateNormal];
У меня проблема в том, что при включенном Voice Over нет возможности активировать значок закладок. Если я ввожу текст, появляется значок «очистить», и его можно выбрать и активировать, как и ожидалось. Но как только текст очищается и появляется значок моих закладок, его нельзя выбрать. Независимо от того, где я нажимаю, прямоугольник Voice Over всегда окружает всю панель поиска, включая значки.
Я попытался установить свойства accessibilityLabel
и accessibilityTraits
в UIImage
для значка. Я установил для свойства isAccessibilityElement
UIImage
значение YES
. Кажется, ничего не работает.
Кто-нибудь знает, какие шаги необходимы, чтобы сделать значок закладок в 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 не задействованы.