6

各セルにUITextViewのみが含まれるテーブルビューがあり、次のように設定されています。

UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
// Declare and set text & frame
...
UITextView *textView = [[UITextView alloc] initWithFrame:frame];
textView.backgroundColor = [UIColor clearColor];
textView.editable = NO;
textView.font = font;
textView.scrollEnabled = NO;
textView.text = text;
[cell.contentView addSubview:textView];

VoiceOver をオンにしてテストすると、テキスト ビューのテキストの左端と右端に、VoiceOver が「空行」と言う小さな空の項目が 2 か所見つかります。たとえば、複数行の文字列がある場合@"multiple\nlines"、最初の行の右端に「空の行」があり、2 行目の左端に別の行があります。最初の行の左側または 2 行目の右側に「空の行」が見つかりませんが、見つけるのが難しいことはわかっています。

VoiceOver がこれらの「空行」を検出するのはなぜですか? どうすればそれらを取り除くことができますか?

4

1 に答える 1

0

これは、今日思いついたこのバグの回避策です。

UITextView をサブクラス化し、オーバーライドします。

- (BOOL)isAccessibilityElement {
    return NO;
}

NOVoiceOver からのオプトアウトを返します。次に、コンテナーに textview を追加し、コンテナー ビューにカスタムの accessibilityLabel を設定します。

containerView.accessibilityLabel = textview.text

これは明らかに一部のケースでは機能しません (私は編集についてあまり調べていません) が、少なくとも、テキスト ビューで問題の動作が表示されない場所に移動できます。

于 2014-07-29T06:31:47.267 に答える