4

テーブルビューの最初のセルはダミーセルであるため、ボイスオーバーモードがオンの場合は、そのセルをスキップして、フォーカスがそのコントロールに到達しないようにします。したがって、その特性はいずれもボイスによって話されません。以上。これを実現するには、以下に貼り付けたコードを作成しました。これには、isAccessibilityElement単独で十分だと考えています。しかし、そうではないようです。この要素はコードではアクセスできないと言っていましたが、Voice-overモードでの右/左フリックによってフォーカスを取得しています。これをどのように達成できるかについてのアイデアはありますか?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
....
     UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:MyIdentifier];
     if(indexPath.row == 0)
     {
          cell.isAccessibilityElement = 0;
     }
}
4

4 に答える 4

2

これを行う現在の方法はaccessibilityElementsHidden、セルをtrue/に設定しているようですYES(Swift を使用するか、Obj-C を使用するかによって異なります)。

提案された他の回答よりもきれいに見え、私の非常に短いテストでは効果的であるようです。

于 2016-06-13T12:45:29.287 に答える
2

いくつかのカスタムセルを使用し、そのセル定義内でこれを実装します:

- (NSInteger)accessibilityElementCount {
    NSIndexPath *indexPath = [(UITableView *)self.superview indexPathForCell: self];
    if(indexPath.row==0){
        return 0;
    }
    else{
        return 1;
    }
}
于 2012-10-30T19:00:10.543 に答える
0

理想的ではありませんが、VoiceOver が有効になっていない場合にのみセルを表示できますか? を使用できます。

UIAccessibilityIsVoiceOverRunning()

アプリの読み込み時に VoiceOver がオンになっているかどうかを確認し、

@selector(voiceOverStatusChanged)

ユーザーがボイスオーバーを有効または無効にした場合に通知されるようにします。詳細については、次のブログ投稿を参照してください。< http://useyourloaf.com/blog/2012/05/14/detecting-voiceover-status-changes.html >

于 2012-10-30T14:38:51.360 に答える