2012-04-20 9 views
2

RTFファイル(電子メール添付ファイルなど)を開くことができるように自分のApp(リッチテキストエディタ)を宣言しました。アプリケーションデリゲートは、ユーザーが添付ファイルを選択すると、UiwebViewコントローラに「loadContent:(NSURL *)url」メッセージを送信します。受信機では、私はURLを取得し、それを行うUIWebViewでRTFファイルをインポートする(コンテンツ編集可能)

- (void) loadContent: (NSURL *) passedURL 
{ 
    if (passedURL) { 
     [self.myWebView loadRequest:[NSURLRequest requestWithURL:passedURL]]; 
    } else { 
     NSBundle *bundle = [NSBundle mainBundle]; 
     NSURL *indexFileURL = [bundle URLForResource:@"index" withExtension:@"html"]; 
     [self.myWebView loadRequest:[NSURLRequest requestWithURL:indexFileURL]]; 

    } 
} 

使用のUIWebViewでRTFファイルをロードし、すべてがすべての権利、および「myWebView」になるRTFファイルの内容を表示します。問題は、このビューはコンテンツ編集可能でなければならず、コードには "index.html"バンドルファイルにあるjavascriptが含まれている必要があります。アプリケーションを起動するときに読み込まれます。だから私はそのようなタグで抽出されたコードを挿入し、完全なコードを再作成するために後でできるようにRTFファイルから作成されたHTMLコードを抽出するためにいくつかのコードを追加:

<div id="content" contenteditable="true"> imported html from rtf should be there</div> 

私はそれを得るためにloadContent方法を変更しました。 NSLogの結果を見ると

- (void) loadContent: (NSURL *) passedURL 
{ 
    if (passedURL) { 
     [self.myWebView loadRequest:[NSURLRequest requestWithURL:passedURL]]; 
     NSString *dum=[self.myWebView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML;"]; 
     NSLog(@"%@",dum); 
    } else { 
     NSBundle *bundle = [NSBundle mainBundle]; 
     NSURL *indexFileURL = [bundle URLForResource:@"index" withExtension:@"html"]; 
     [self.myWebView loadRequest:[NSURLRequest requestWithURL:indexFileURL]]; 

    } 
} 

、私は前myWebView のHTMLコンテンツだっただけで、次のHTML

<div id="content" contenteditable="true">Hello folks</div> 

を取得し、私は...

をRTFファイルをロードあなたは何が起こっているの任意のアイデアを持っていますか? dumは、表示されているmyWebViewに新しいコードが表示されるため、元のコードが表示されるのはなぜですか?それは、loadRequestが分離されたスレッドで実行され、次の命令を実行するときに、myWebViewには以前のコードが含まれているからですか?

おかげ

[EDITED]私もwebViewDidFinishLoad中のWebViewのコンテンツのNSLogしようとした:デリゲートメソッドを、同じ結果を得る:このWebViewの内容を私はRTF形式の添付ファイルを開く前に。同期的な方法でロード要求を行うことは可能ですか?

答えて

2

これは、loadRequestが非同期であるためです。そのNSLogを試す前にロードが完了するのを待つ必要があります。 UIWebViewDelegateドキュメントをご覧ください。 webViewDidFinishLoadの内部/後にNSLogを試してください。より良い結果が得られるはずです。

+0

ありがとうございました。私はwebViewDidFinishLoadでそれを行いましたが、同じ結果が得られます... – Denis

+0

あなたは今持っているもので質問を更新できますか? –

+0

私はすでにそれをやった! – Denis

関連する問題