Sto provando a migliorare il supporto Voice Over in un'app. Ho un UISearchBar
. Ho impostato la proprietà showBookMarks
su YES
. E ho messo un'immagine personalizzata con:Come rendere accessibile l'icona dei segnalibri di UISearchBar?
[searchbar setImage:icon forSearchBarIcon:UISearchBarIconBookmark state:UIControlStateNormal];
Il problema che ho è che con Voice Over acceso, non v'è alcun modo per attivare l'icona Segnalibri. Se inserisco il testo, viene visualizzata l'icona "Cancella" che può essere selezionata e attivata come previsto. Ma una volta che il testo è stato cancellato e l'icona dei miei segnalibri appare, non può essere selezionata. Indipendentemente da dove tocchi, il rettangolo Voice Over circonda sempre l'intera barra di ricerca, incluse le icone.
Ho provato a impostare le proprietà accessibilityLabel
e accessibilityTraits
su UIImage
per l'icona. Ho impostato la proprietà isAccessibilityElement
di UIImage
su YES
. Niente sembra funzionare.
Qualcuno sa quali passaggi sono necessari per rendere l'icona dei segnalibri in un UISearchBar
accessibile?
Ecco il codice completo per la barra di ricerca:
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];
Informazione supplementare:
Devo dire che la barra di ricerca viene utilizzato con un UITableViewController
che è collegata con un UISearchDisplayController
. La barra di ricerca viene impostata come headerView
nella vista tabella.
E tutto questo è fatto nel codice. Non sono coinvolti storyboard o xibs.
@downvoter si prega di spiegare il downvote. Ho pubblicato la risposta esatta al problema che avevo. Questo è un requisito non documentato per far sì che Voice Ovet funzioni correttamente per questo caso. – rmaddy
Per favore, spiega dove hai trovato che la dimensione di UISearchBarIconBookmark deve essere 40x29px? È una dimensione minima, una dimensione massima, una dimensione esatta o un rapporto esatto? Sono riuscito a farlo funzionare con altre dimensioni, ma non so quale sia quello raccomandato. –
L'ho trovato per tentativi ed errori. La mia dimensione originale non ha funzionato. Quando ho provato la dimensione specificata, ha iniziato a funzionare. Non ho testato altre combinazioni quindi è sicuramente possibile che altre dimensioni funzionino. Se sei a conoscenza di altre taglie che funzionano, per favore pubblicale in modo che gli altri possano trarne beneficio. – rmaddy