gpt4 book ai didi

ios - 画外音只读取 UILabels 而不是 UIWebview 内容

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:08:00 27 4
gpt4 key购买 nike

我创建了 UITableViewCell,它包含 2 个对象:

  1. UILabel - 用于显示标题文本。
  2. UIWebView- 用于显示 HTML。

通常当 Voice 聚焦 UITableViewCell 时,它会毫无问题地读取所有添加的标签,但在我的情况下,画外音只读取标题而不是 webview html 内容,用户必须左右滑动才能移动到下一个/上一个元素读取webview的内容。

我的要求是,当语音聚焦 UITableViewCell 时,语音应该一次读取 UILabels 和 webview 内容,因为作为开发人员我们知道它是一个 HTML,但对于应用程序用户(盲人)对此一无所知。

我还想知道如何禁用 UIWebview 可访问性。我尝试将 isAccessibility 设置为 NO,但 Voice Over 仍然关注 UIWebview。[self.webview setIsAccessibilityElement:NO];

如何解决这个问题?

最佳答案

我已经通过在表格单元格 View 中实现方法“accessibilityLabel”解决了这个问题。对于webview fetch web view内容,将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;
}

关于ios - 画外音只读取 UILabels 而不是 UIWebview 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21571996/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com