VoiceOver在UITextView的两侧查找“清空行”

时间:2013-02-07 23:22:07

标签: ios uitextview voiceover

我有一个表视图,其中每个单元格只包含一个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表示“空行”。如果我有一个多行字符串,例如@"multiple\nlines",然后在第一行的右边缘有一个“空行”,在第二行的左边缘有另一行。我找不到第一行左边或第二行右边的“空行”,但总而言之,我知道它们很难找到。

为什么VoiceOver会找到这些“空行”?我如何摆脱它们?

1 个答案:

答案 0 :(得分:0)

以下是我们今天提出的this bug解决方法。

子类UITextView并覆盖:

- (BOOL)isAccessibilityElement {
    return NO;
}

返回NO选择退出VoiceOver。然后,使容器向其添加textview并在容器视图上设置自定义accessibilityLabel:

containerView.accessibilityLabel = textview.text

这显然不适用于某些情况(我没有仔细研究过),但它至少会让你到一个文本视图不会显示相关行为的地方。