2011-12-24 35 views
1

私はNibに2つのuiwebviewを追加し、同じhtmlをドキュメント辞書にロードします。webViewDidFinishLoadは、1つのビュー内の2つのuiwebviewsでは機能しません。

それは二回webViewDidFinishLoadになりますが、一つだけのWebViewのスタイルを変更...

おかげで、ここに私のコードは次のとおりです。私は

- (void)viewDidLoad{ 
NSString *_pagesPath = [NSHomeDirectory() stringByAppendingFormat:@"/Documents/chapter5.htm"]; 

web1.delegate = self; 

[web1 loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:_pagesPath]]]; 


web2.delegate = self; 
[web2 loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:_pagesPath]]]; 

}

- (void) webViewDidFinishLoad:(UIWebView*)webView{  
NSString *varMySheet = @"var mySheet = document.styleSheets[0];"; 

NSString *addCSSRule = @"function addCSSRule(selector, newRule) {" 
"if (mySheet.addRule) {" 
"mySheet.addRule(selector, newRule);"        // For Internet Explorer 
"} else {" 
"ruleIndex = mySheet.cssRules.length;" 
"mySheet.insertRule(selector + '{' + newRule + ';}', ruleIndex);" // For Firefox, Chrome, etc. 
"}" 
"}"; 

NSString *insertRule2 = [NSString stringWithFormat:@"addCSSRule('p', 'text-align: justify;line-height:3.5')"]; 
NSString *insertRule3 = [NSString stringWithFormat:@"addCSSRule('body', 'background:#e0d9ca;')"]; 

[webView stringByEvaluatingJavaScriptFromString:varMySheet]; 
[webView stringByEvaluatingJavaScriptFromString:addCSSRule]; 

[webView stringByEvaluatingJavaScriptFromString:insertRule2]; 
[webView stringByEvaluatingJavaScriptFromString:insertRule3]; 

}

答えて

0

間違ったことは何も見えません。しかし、あなたの2つのUIWebViewsは同じです。この場合、UIWebViewをサブクラス化する必要があります。サブクラス化は、再利用のための良い方法であり、より意味があり、最も重要なことは、あなたの問題を解決する可能性があります。

ちなみに、accessorを使ってプロパティにアクセスするには、self.web1またはself.web2を使用する必要があります。アクセッサの外側にインスタンス変数(web1、web2)を使用しないでください。あなたはより多くの、より良い

@synthesize web1 = _web1; 

をいただきたい、これを読んで:Question about @synthesize

+1

おかげで、私はここで解決策を持ってます。http://double-slash.net/2010/10/18/using-multiple-ios -uiwebview-objects / – user1114574

関連する問題