UITableViewController があり、セクション ヘッダーをカスタマイズしてプレーン テキストに近づけようとしています。サブビューをカスタム headerView (以下で詳しく説明) に追加すると、VoiceOver ヘッダー ナビゲーションが壊れることがわかりました。
例: Header1、Header2、Header3 の 3 つのヘッダーを持つテーブルがあるとします。
viewForHeaderInSection メソッドのカスタム実装がなくても、ボイスオーバー ローターを切り替えて見出しでナビゲートでき、すべてが意図したとおりに機能します。
次の方法でviewForHeaderInSectionメソッドを実装すると、Header1からHeader2、Header3、およびHeader2に戻ることができますが、ボイスオーバーはすべてのヘッダーを失います(「ヘッダーが見つかりません」と言う)。
headerLabel をサブビューとして headerView に追加すると、問題が発生することがわかりました。headerLabel を非表示のアクセシビリティ要素に設定して、ボイスオーバーが拾わないようにしましたが、問題は解決しません。
- (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;
}
VoiceOver がこのように反応する理由を教えてください。
ありがとう。