2014-02-05 56 views
1

我創建的UITableViewCell,包含2個對象:語音只讀取UILabels而不是UIWebView的內容

  1. 的UILabel - 用於顯示標題文本。
  2. UIWebView-用於顯示HTML。

通常,當語音集中的UITableViewCell,它讀取沒有任何問題都添加標籤,但對我來說,語音只讀取標題,而不是web視圖的html內容,用戶刷卡左,右移動到下一個/先前讀取webview內容的元素。我的要求是,當語音焦點UITableViewCell,語音應該一次讀取UILabels和webview內容,因爲作爲開發者,我們知道它的HTML,但對於應用程序用戶(盲人) 不知道它有什麼想法。

另外我想知道如何禁用UIWebview的可訪問性。我試通過設置isAccessibility爲NO,但仍然Voice Over重點UIWebview。 [self.webview setIsAccessibilityElement:NO];

如何解決這個問題?

+0

兄弟,你是如何在UIWebView上集成語音的? –

回答

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; 
} 
0

如何:

[self.webview setAccessibilityElementHidden:YES] 

然後設置你喜歡在與accessibilityLabel物業小區無論無障礙標籤。

+0

感謝您的回覆,但我想禁用webview的可訪問性,這是在UITableViewCell裏面,VO應該一次性讀取單元格標籤和webview內容,而不需要額外的努力,否則任何盲人導航和閱讀屏幕都會更困難內容。 –

+0

不錯。很高興你找到了解決方案。 –

相關問題