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 会说“空行”。如果我有一个多行字符串,例如@"multiple\nlines",那么第一行的右边缘有一个“空行”,第二行的左边缘有另一个。我在第一行左侧或第二行右侧找不到“空行”,但据我所知,它们很难找到。

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

4

1 回答 1

0

这是我们今天提出的这个错误的解决方法。

子类 UITextView 并覆盖:

- (BOOL)isAccessibilityElement {
    return NO;
}

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

containerView.accessibilityLabel = textview.text

这显然不适用于某些情况(我还没有研究过太多编辑),但它至少可以让您到达文本视图不显示相关行为的地方。

于 2014-07-29T06:31:47.267 回答