2012-04-20 6 views
2

Я объявил свое приложение (текстовый редактор), чтобы иметь возможность открывать любой RTF-файл (например, из вложения электронной почты). Делегат приложения отправляет сообщение «loadContent: (NSURL *) url» в контроллер UiwebView, когда пользователь выбирает вложение. В приемнике, я получаю URL и загрузить файл в формате RTF в UIWebView с использованиемИмпорт RTF-файла в UIWebView (редактируемый контент)

- (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]]; 

    } 
} 

Делая это, все идет нормально, и «myWebView» отображает содержимое файла RTF. Проблема в том, что это представление должно быть доступно для редактирования, а код должен содержать некоторый javascript, который у меня есть в моем файле с индексом «index.html». Я загружаю при запуске приложения. Так что я добавил код, чтобы извлечь HTML-код, созданный из файла RTF, чтобы иметь возможность впоследствии восстановить полный код, вставив извлеченный код в теге так:

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

Я изменил метод LoadContent, чтобы получить, что ,

- (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]]; 

    } 
} 

Заглядывая в результате NSLog, я получаю только на следующий HTML

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

Какой был содержание HTML в myWebView ПЕРЕД Я загрузил файл в формате RTF ...

У вас есть представление о том, что происходит? Почему dum отображает прежний код, так как отображаемый myWebView отображает новый? Это потому, что loadRequest выполняется в отдельном потоке и что при выполнении следующей команды myWebView по-прежнему содержит прежний код?

Благодаря

[Изменено] Я также попытался NSLog содержание WebView в webViewDidFinishLoad: делегат метода, но получить тот же результат: содержание этого WebView, прежде чем я открыл файл вложения в формате RTF. Возможно ли синхронно сделать запрос на загрузку?

ответ

2

Это потому, что loadRequest является асинхронным. Перед загрузкой NSLog вам нужно дождаться завершения загрузки. Взгляните на документы UIWebViewDelegate. Попробуйте NSLog внутри/после webViewDidFinishLoad: и вы должны получить лучшие результаты.

+0

Спасибо. Я сделал это в webViewDidFinishLoad, но получаю тот же результат ... – Denis

+0

Можете ли вы обновить вопрос тем, что у вас есть сейчас? –

+0

Я уже сделал это! – Denis

Смежные вопросы