2011-12-26 11 views
11

Ho un UITableView che ho lo scorrimento verso il basso non appena l'utente aggiunge un altro elemento/cella di tabella ad esso. Per lo schermo funziona bene, perché l'utente può vedere la cella che ha appena aggiunto in fondo alla tabella. Ma quando eseguo la mia app utilizzando VoiceOver, il primo UITableCell a essere focalizzato e letto è la cella superiore visibile sullo schermo.Imposta lo stato attivo di voiceover su una specifica cella di tabella in uitableview (UIAaccessibility)

Voglio impostarlo in modo che la cella che viene messa a fuoco e quindi leggere non appena appare questo UITableView sia l'ultima cella della tabella. Come faccio a fare questo? Sembra che sarebbe molto semplice ma non riesco a capirlo.

Ecco quello che ho provato finora (in cellForRowAtIndexPath):

if (cellJustAdded && indexPath.row == [array count]-1) { 
    cell.accessibilityElementIsFocused = YES; //obviously this does not work 
} 

ma non credo che si può usare accessibilityElementIsFocused così.

+0

Va bene così io sono abbastanza sicuro che la risposta a questa si trova da qualche parte con 'UIAccessibilityZoomFocusChanged' ma io non riesco a farlo lavorare. – Ginny

+0

'UIAccessibilityZoomFocusChanged' viene utilizzato quando la funzione di zoom è attivata nelle impostazioni. –

risposta

8

Quando si desidera che VoiceOver selezioni un determinato elemento, è possibile pubblicare una notifica di accessibilità utilizzando UIAccessibilityPostNotification(...);.

A seconda se si tratta di un importante (completa dello schermo) modifica o un minore (solo layout) cambiare si deve inserire sia

  • UIAccessibilityScreenChangedNotification (completo cambiamento)
  • UIAccessibilityLayoutChangedNotification (spiccioli)

In entrambi i casi l'argomento facoltativo è l'elemento a cui deve passare VoiceOver.

Così, dopo aver aggiunto la nuova cella alla visualizzazione tabella che chiamereste

UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, 
           yourNewCellThatShouldHaveFocus); 
+0

In questo modo non sembra funzionare per me in più posti. Qualche ipotesi su quale potrebbe essere la ragione? – Dynamite

Problemi correlati