2012-01-30 9 views
6

Ho un UITableViewController e sto tentando di personalizzare le intestazioni di sezione per apparire più come testo normale. Sto scoprendo che quando aggiungo una sottoview all'intestazione personalizzata (dettagliata sotto), si interrompe la navigazione dell'intestazione di VoiceOver.Aggiunta di una visualizzazione secondaria a una vista personalizzataForHeaderInSection interrompe la navigazione di VoiceOver

Ad esempio: Dire che ho una tabella con tre intestazioni: Intestazione1, Intestazione2, Intestazione3.

Senza un'implementazione personalizzata del metodo viewForHeaderInSection, è possibile passare il rotore di voiceover per navigare in base alle intestazioni e tutto funziona come previsto.

Quando implemento il metodo viewForHeaderInSection nel modo seguente posso passare da Header1 a Header2 a Header3 e eseguire il backup su Header2, ma la voce fuori campo perde tutte le intestazioni (dicendo "nessuna intestazione trovata").

Ho trovato il problema si avvia quando aggiungo l'headerLabel come sottoview a headerView. Ho provato a impostare headerLabel su un elemento di accessibilità nascosto in modo che la voce non lo raccolga, ma il problema persiste.

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 

UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0,0,tableView.frame.size.width,30)]; 

UILabel *headerLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 0, headerView.frame.size.width-120.0, headerView.frame.size.height)]; 

headerLabel.textAlignment = UITextAlignmentLeft; 
headerLabel.font = [UIFont boldSystemFontOfSize:22]; 
headerLabel.text = [headersArray objectAtIndex:section]; 
headerLabel.backgroundColor = [UIColor clearColor]; 

[headerView addSubview:headerLabel]; 

return headerView; 

} 

Qualsiasi idea del perché VoiceOver reagisca in questo modo sarebbe apprezzata.

Grazie.

+0

Sto affrontando gli stessi problemi, sarebbe bello se qualcuno avesse aggiornamenti su quell'argomento – romrom

+0

Aggiungimi alla lista degli sviluppatori che vorrebbero migliorare l'accessibilità usando le intestazioni di sezione personalizzate. –

risposta

0

È improbabile che questa sia la risposta al problema originale, ma ho semplicemente risolto un problema simile.

Avevo un UIView personalizzato per le intestazioni di sezione, e ne ho conservato un pool in un array, riutilizzandole occidentalmente. Questa confusa VoiceOvery completamente, e andando avanti o indietro non ha sempre portato a selezionare la cella precedente o successiva come previsto.

Tuttavia, quando ho cambiato la creazione di un nuovo UIView ogni volta che tableView: viewForHeaderInSection: è stato chiamato, questa confusione di navigazione di VoiceOver si è arrestata e tutto ha funzionato correttamente. Le mie visualizzazioni di intestazione sono accessibili (isAccessibleElement) e hanno un set di etichette.

Problemi correlati