我有一个表视图,其中每个单元格只包含一个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会找到这些“空行”?我如何摆脱它们?
答案 0 :(得分:0)
以下是我们今天提出的this bug解决方法。
子类UITextView并覆盖:
- (BOOL)isAccessibilityElement {
return NO;
}
返回NO
选择退出VoiceOver。然后,使容器向其添加textview并在容器视图上设置自定义accessibilityLabel:
containerView.accessibilityLabel = textview.text
这显然不适用于某些情况(我没有仔细研究过),但它至少会让你到一个文本视图不会显示相关行为的地方。