2009-10-26 18 views

risposta

-5

Consultare la documentazione Apple su UIAccessibility.

+0

Sì, ho già letto i documenti. Speravo che ci fosse un modo per farlo in IB o in qualche altro modo elegante. Ho pubblicato la mia soluzione kludge ma sono ancora aperta per un approccio più pulito. –

+0

Siamo spiacenti, questa funzionalità non è stata aggiunta (ancora?) A IB. Penso che kludge sia probabilmente il migliore che hai intenzione di fare per ora. –

15

Ok, sembra che non ci sia modo di farlo in Interface Builder, anche se puoi impostare gli attributi di accessibilità su altri elementi dell'interfaccia utente usando IB. Così mi sono messo un tag sulla mia barra degli strumenti e poi aggiunto questo codice al mio metodo viewWillAppear:

UIToolbar *bottombar = (UIToolbar*)[self viewWithTag:kBottomToolbar]; 

UIView *view = (UIView*)[bottombar.items objectAtIndex:0]; 
[view setAccessibilityLabel:NSLocalizedString(@"Add Bookmark", @"")]; 
[view setAccessibilityHint:NSLocalizedString(@"Add Bookmark", @"")]; 

e così via per ogni elemento pulsante ...

Non il più elegante, ma funziona.

+2

A partire da iOS 5.0 è possibile impostare direttamente la proprietà 'accessibilityLabel' su un' UIBarButtonItem'. – rmaddy

1

Provare a impostare le etichette di accessibilità manualmente non ha funzionato con le immagini UIBarButtonItem. Tuttavia, se imposto manualmente il titolo, l'etichetta funzionerebbe. Ma visualizza il titolo sotto l'immagine.

Ho finito per creare un UIButton e usarlo come vista personalizzata per UIBarButtonItem. L'unica perdita è il mascheramento dell'immagine eseguita da UIBarButtonItem. Bonus aggiuntivo: accessibilità configurabile in IB.

3

ho ottenuto il codice qui sopra per lavorare con UIBarButtonItems con una riga in più:

[vista setIsAccessibilityElement: YES];

+0

Questo risolve il problema. Tieni presente che se anche una vista genitore ha questo insieme su SÌ, le sottoview vengono ignorate. –

7

So che questo è vecchio ma mi sono appena imbattuto in un bisogno per questo. A partire da iOS 5.0, è ora possibile impostare facilmente l'etichetta accessibilità di un UIBarButtonItem facendo:

UIBarButtonItem *btn = [[UIBarButtonItem alloc] init...; 
btn.accessibilityLabel = @"Label"; 

Niente più hack.

26

È possibile utilizzare i "definiti dall'utente attributi di esecuzione" e specificare le informazioni di accessibilità c'è: Runtime attributes

+0

È un modo semplice. – mishimay

+1

Correzione rapida, per il suggerimento dovresti usare 'accessibilityHint', non' keyPath' – Sirens

17

Non è sufficiente per impostare in realtà solo l'accessibilityLabel User Runtime Definito attributo in IB. Devi anche impostare isAccessibilityElement su true. Ciò mantiene tutte le informazioni sull'accessibilità all'interno di IB. IB Screenshot

+1

Per abbinare altri elementi, il tipo dovrebbe essere Localized String. – OrangeDog

+0

Puoi tradurre l'accessibilityLabel impostato in questo modo? – Andy

3

È possibile utilizzare IBInspectable per questo in modo da ottenere alcune opzioni a portata di mano in pannello laterale di Interface Builder.

public extension UIBarButtonItem { 
    @IBInspectable var accessibilityEnabled: Bool { 
    get { 
     return isAccessibilityElement 
    } 
    set { 
     isAccessibilityElement = newValue 
    } 
    } 

    @IBInspectable var accessibilityLabelText: String? { 
    get { 
     return accessibilityLabel 
    } 
    set { 
     accessibilityLabel = newValue 
    } 
    } 
} 

UIBarButton Accessibility options in Interface Builder

https://gist.github.com/KaneCheshire/dcce5246c3399072a5200189bfc53fe2

Problemi correlati