iOS で Acapela TTS を使用しています。読み上げたいすべてのテキスト (およびマークアップ) を含む HTML ドキュメントがあります。テキストは段落に分割されており、各ヘッダーで TTS を開始できるようにしたいと考えています。現時点では、各段落を独自の UIWebView (内部マークアップを処理するため) に配置し、これらを UIScrollView に追加してすべての要素をナビゲートします。各 UIWebView はボタンでオーバーロードされているため、ボタンを押すと、接続されたテキストが読み上げられます。私の問題は、フレーム(静的なy位置を意味する)を使用してUIWebViewとボタンを配置する必要があることですが、これには現在の問題である正確な高さが必要です。この質問に記載されているソリューションを使用してみました: UIWebView の高さ、それでも見栄えがよくありません-Webビューが高すぎるか短すぎるため、完璧にする必要があるため、一貫したWebページのように見えます.
私が見落としていた別の Web ビューに分割せずに、このタイプの 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)];
}