文本到语音和导航

时间:2012-04-26 07:34:48

标签: ios uiwebview uiscrollview

我正在使用iOS上的Acapela TTS。 我有一个HTML文档,其中包含我想要读出的所有文本(和标记)。 文本分为段落,我希望能够在每个标题处启动TTS。 目前我将每个段落放在它自己的UIWebView中(用于处理内部标记)并将这些段落添加到UIScrollView以导航所有元素。每个UIWebView都会重载一个按钮,因此当按下它时,会大声朗读连接的文本。 我现在的问题是,我必须使用一个框架(意味着一个静态的y位置)放置UIWebView和Buttons,但这需要我有确切的高度,这是我当前的问题。 我尝试过使用此问题中提到的解决方案:UIWebView height,但它仍然看起来不太好 - 无论是网页浏览量是高还是短,我都需要它是完美的,所以它看起来像一个一致的网页

有没有人知道这种类型的TTS的不同方式,而不是在我忽略的单独网页中将其拆分?

这是放置UIWebViews的代码:

float yOffset = 0;
UIWebView *previous = nil;

//UIWebView delegate
-(void)webViewDidFinishLoad:(UIWebView *)webView{

NSString *height = [webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight;"];

if(previous!=nil){
    yOffset += previous.frame.size.height;
}
CGFloat h = [height floatValue];

CGRect frame = CGRectMake(0, yOffset, scrollView.frame.size.width, h); 

[webView setFrame:frame];
[webView setOpaque:NO];
[webView setBackgroundColor:[UIColor whiteColor]];
previous = webView;
[scrollView addSubview:webView];

yOffset += previous.frame.size.height;

[scrollView setContentSize:CGSizeMake(scrollView.frame.size.width, yOffset)];

}

1 个答案:

答案 0 :(得分:0)

只是一个想法:您可以将完整的段落转换为可点击的链接,指向段落的某些标识符。然后,您可以使用UIWebViewDelegate覆盖点击事件,并使用javascript获取段落文本。我的意思是这样的:

HTML:

<p id="paragraph1"><a href="paragraph1">First paragraph</a></p>
<p id="paragraph2"><a href="paragraph2">Second paragraph</a></p>

实施shouldStartLoadWithRequest的{​​{1}}:

UIWebViewDelegate
相关问题