我创建了UITableViewCell,它包含两个对象:
通常当语音焦点UITableViewCell时,它会毫无问题地读取所有添加的标签,但在我的情况下,语音只读取标题而不是webview html内容,用户必须向左和向左滑动才能移动到下一个/上一个元素阅读webview的内容。
我的要求是,当语音焦点UITableViewCell时,语音应该一次性读取UILabels和webview内容,因为作为开发人员我们知道它是HTML,但对于app用户(盲人) 我对此一无所知。
另外,我想知道如何禁用UIWebview可访问性。我尝试将isAccessibility设置为NO,但仍然 Voice Over 焦点UIWebview。
[self.webview setIsAccessibilityElement:NO];
如何解决这个问题?
答案 0 :(得分:2)
我通过在表格单元格视图中实现方法“accessibilityLabel”解决了这个问题。对于webview获取Web视图内容,将html转换为纯文本并使用它。不要忘记禁用标签和webview可访问性。
-(NSString*)accessibilityLabel{
NSString *labelText=nil;
NSMutableString *cellLabelText=[[NSMutableString alloc] init];
//Set label
[cellLabelText appendString:[NSString stringWithFormat:@", %@", self.titleLabel.text]];
//Fetch web view content, convert html into plain text and use it.
NSString *html = [self stringByEvaluatingJavaScriptFromString: @"document.body.innerHTML"];
NSString *plainText=[self convertHTMLIntoPlainText:html];
[cellLabelText appendString:plainText];
labelText=[NSString stringWithString:cellLabelText];
[cellLabelText release];
return labelText;
}
-(NSString *)convertHTMLIntoPlainText:(NSString *)html{
NSScanner *myScanner;
NSString *text = nil;
myScanner = [NSScanner scannerWithString:html];
while ([myScanner isAtEnd] == NO) {
[myScanner scanUpToString:@"<" intoString:NULL] ;
[myScanner scanUpToString:@">" intoString:&text] ;
html = [html stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"%@>", text] withString:@""];
}
//
html = [html stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
return html;
}
答案 1 :(得分:0)
怎么样:
[self.webview setAccessibilityElementHidden:YES]
然后使用accessibilityLabel属性在单元格上设置您喜欢的任何可访问性标签。