6

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 がこのように反応する理由を教えてください。

ありがとう。

4

2 に答える 2

0

私は同様の問題を回避しました

headerLabel.accessibilityTraits = [.header]

(スウィフトコード)

于 2019-06-21T04:47:12.157 に答える