2011-12-24 3 views
1

두 번째 uiwebviews를 내 펜촉에 추가하고 문서 사전에 같은 html을로드합니다.하나의보기에서 두 개의 uiwebviews에 대해 webViewDidFinishLoad가 작동하지 않습니다.

그것은 두 번 webViewDidFinishLoad로 전환하지만, 단 하나 개의 웹보기의 스타일을 변경 ..

감사합니다, 여기에 내 코드입니다 :

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

I 틀린 것을 볼 수 없다. 하지만 두 개의 UIWebViews는 동일합니다.이 경우 UIWebView의 하위 클래스를 만들어야합니다. 서브 클래 싱은 재사용을위한 좋은 방법이며, 더 의미 있고, 가장 중요한 것은 문제를 해결할 수 있습니다.

한편, 접근자를 통해 속성에 액세스하려면 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

관련 문제