2012-07-24 18 views
7

La voce di Apple ha mal interpretato il titolo di una delle mie visualizzazioni, che si trova all'interno di un controller UINavigation.Accessibilità iOS - Come si imposta l'etichetta di accessibilità per il titolo di UINavigationBar?

In altre parti dell'applicazione ho aggiunto un'etichetta di accessibilità personalizzata per aiutarla a pronunciare correttamente il nome della società. Come posso impostare l'etichetta di accessibilità di una UINavigationBar?

risposta

10

non ho potuto aggiungere un'etichetta di accessibilità, ma ho trovato una soluzione:.

sostituisco del navigationItem titolo View con un UILabel che ha l'accessibilità impostare.

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; 

Io non sono sicuro perché impostando l'etichetta di accessibilità non funziona, ma il codice precedente funziona per le mie esigenze.

+2

Grazie per aver postato la soluzione! Il problema con UINavigationBar potrebbe valere la pena archiviare con Apple. Sono abbastanza bravi nell'affrontare le segnalazioni di bug relative all'accessibilità (incluso il problema UIBarButtonItem che avevo descritto sopra). – Turix

+0

Fantastica idea! – Husam

0

Poiché UINavigationBar eredita da UIView, si dovrebbe essere in grado di impostare la proprietà accessibilityLabel. Prova: yourUINavigationBar.accessibilityLabel = @"title";.

Inoltre, potrebbe essere necessario assicurarsi che sia contrassegnato come un elemento di accessibilità con yourUINavigationBar.isAccessibilityElement = YES; (e non si trova all'interno di un'altra vista contrassegnata anche come elemento di accessibilità). (Suppongo che questo ultimo problema potrebbe essere il problema, dal momento che sembra che tu sappia già sulle etichette di accessibilità. Puoi usare l'ispettore di accessibilità nel simulatore per vedere se questo è il caso osservando il riquadro attorno all'elemento quando toccarlo per vedere se è in giro qualcosa di più grande della barra di navigazione)

+0

Questo non ha funzionato per me, ho paura. Ho impostato isAccessibilityElement = YES e il titolo non si trova all'interno di un'altra vista contrassegnata come elemento di accessibilità. –

+0

@RobertWagstaff Siamo spiacenti! Confesso di non aver mai avuto questo problema, ma mi viene in mente che forse è necessario farlo per la proprietà 'titleView' dell'oggetto' UINavigationItem'. (A proposito, sembra simile a un problema che ho avuto con l'accessibilità 'UIBarButtonItem' nel passato in cui non si comportava come" normale "roba relativa a UIView.) – Turix

+0

ancora senza fortuna, ho provato: self.navigationItem. title = @ "myTitle"; [self.navigationItem.titleView setIsAccessibilityElement: YES]; [self.navigationItem.titleView setAccessibilityLabel: @ "AccessibilityTitle"]; all'interno del caricoView –

14

Questo funziona in iOS 8.2. In viewDidLoad:

self.navigationItem.accessibilityLabel = @"My accessible label"; 

Quando un controller di navigazione transizioni al controller della vista, il accessibilityLabel viene letta invece del controller della vista title.

+0

Ha funzionato per me su iOS 7.1.2. Questa è la risposta perfetta e dovrebbe essere selezionata come risposta corretta. – Vlad

+0

Risposta migliore, funziona su iOS9. – BollMose

+0

Accetto, risposta migliore. – Tyten

Problemi correlati